gpt4 book ai didi

java - 尝试启动新 Activity 时出现空指针异常

转载 作者:行者123 更新时间:2023-11-29 19:53:54 24 4
gpt4 key购买 nike

我是 java 和 android studio 的新手。当用户位于 map 上指定点的特定距离内时,我正在尝试启动新 Activity 。

以下类确定用户与每个点的距离,当用户在一定距离(10m)内时,我希望启动一个新 Activity ,用户将能够根据位置回答问题。

但是当我尝试开始新 Activity 时出现错误:

E/AndroidRuntime: FATAL EXCEPTION: main

Process: uk.ac.ucl.cege.cegeg077.ucfapwh.firstapp, PID: 6616
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:106)
at uk.ac.ucl.cege.cegeg077.ucfapwh.firstapp.CustomLocationListener.onLocationChanged(CustomLocationListener.java:67)
at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:281)
at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:210)
at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:226)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)

这是我目前的代码:

import android.app.Activity;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import java.lang.reflect.Array;
import java.util.ArrayList;

public class CustomLocationListener extends Map implements LocationListener {
public Map parentActivity ;
public ArrayList<GeoPoint> coordList;
// this method is called every time the user moves around - i.e. changes location
// it pops up a toast message with the new coordinates
public void onLocationChanged(Location location) {

// now measure distance from all the pre-set proximity alerts
for (int i = 0; i < coordList.size(); i++) {

// create GeoPoint object for each pair of coordinates
GeoPoint gp = coordList.get(i);

// create Location object
Location fixedLoc = new Location("one");

// get lat and lng values from GeoPoint object
Float lat = Float.valueOf(String.valueOf(gp.getLatitude()));
Float lng = Float.valueOf(String.valueOf(gp.getLongitude()));

// set location for proximity alert
fixedLoc.setLatitude(lat);
fixedLoc.setLongitude(lng);

// use Android distanceTo function to calculate the distances
float distance = location.distanceTo(fixedLoc);

Log.i("****DISTANCE****",String.valueOf(distance));
Log.i("*****FIXEDLOC****", fixedLoc.toString());

for (int j = 0; j < coordList.size(); j++ ) {

if (i == j && distance < 120) {

GeoPoint geoPoint = coordList.get(j);

Log.i("****PROXI LAT*****", geoPoint.getLatitude().toString());
Log.i("****PROXI LNG****", geoPoint.getLongitude().toString());

Intent quizIntent = new Intent(getApplicationContext(),Questions.class);
startActivity(quizIntent);

}
}

}

}

// these methods are called when the GPS is switched on or off
// and will allow the App to warn the user and then
// shut down without an error
public void onProviderDisabled(String s) {
}
public void onProviderEnabled(String s) {
}

// this method is required by the LocationListener
// we do not need to do anything here
// but in a full implementation this could be used to react when the GPS signal is not available
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub

}

}

抱歉格式不佳。任何帮助将不胜感激。

最佳答案

已解决:

要从非 Activity 类中检索上下文,需要以下代码:

private Context context;

public NonActivityClass(Context context) {
this.context = context.getApplicationContext();
}

然后触发 Intent 并开始新 Activity :

                Intent i = new Intent(context, Activity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

感谢您的帮助。

get Context in non-Activity class

关于java - 尝试启动新 Activity 时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36848484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com