Java 启动Android活动会产生NullPointerException
我有一个活动,LookingForGPS,它开始另一个活动,Run。开始运行后,LookingForGPS不会完成,而是在运行中不断更新一些文本视图:Java 启动Android活动会产生NullPointerException,java,android,Java,Android,我有一个活动,LookingForGPS,它开始另一个活动,Run。开始运行后,LookingForGPS不会完成,而是在运行中不断更新一些文本视图: Run run = new Run(); if(runHasBeenStarted)run.getAndSetValues(someParameters, this); 据我所知,此返回LookingForGPS活动。但是,过了一段时间(当参数为某个值时),我想启动一个新的活动PostRun。从运行实例的getAndSetValues调用以下方
Run run = new Run();
if(runHasBeenStarted)run.getAndSetValues(someParameters, this);
据我所知,此
返回LookingForGPS活动。但是,过了一段时间(当参数为某个值时),我想启动一个新的活动PostRun。从运行实例的getAndSetValues调用以下方法:
private void killEverythingAndProceed(Context context){
Intent finishRun = new Intent(context, PostRun.class);
//putting some extras into the intent
startActivity(finishRun);
}
然后我在startActivity行得到一个NullPointerException:
11-17 08:34:33.647 2472-2472/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: lv.rv1g.kj0112.forward, PID: 2472
java.lang.NullPointerException
at android.app.Activity.startActivityForResult(Activity.java:3424)
at android.app.Activity.startActivityForResult(Activity.java:3385)
at android.app.Activity.startActivity(Activity.java:3627)
at android.app.Activity.startActivity(Activity.java:3595)
at lv.rv1g.kj0112.forward.Run.killEverythingAndProceed(Run.java:143)
at lv.rv1g.kj0112.forward.Run.getAndSetValues(Run.java:88)
at lv.rv1g.kj0112.forward.LookingForGPS.onLocationChanged(LookingForGPS.java:100)
at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:279)
at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:208)
at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:224)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
我做错了什么?我想这是因为我缺乏面向对象编程的知识。这不是额外因素造成的,上下文也应该是正确的,因为它适用于来自同一实例的另一个方法
编辑:详细说明
LookingForGPS活动有一个LocationManager(不使用服务,因为它有一些太复杂的限制,我无法解决)。每次调用onLocationChanged
时,都会实例化Run
活动(我首先检查它是否已实际启动,由用户独立于LocationManager启动),并调用Run
中的getAndSetValues
方法,给出一组参数getAndSetValues
然后在Run
活动中执行一些计算并更新一些TextView
。还将执行计算以查看是否满足特定条件。如果已启动,则应该启动postRun
活动,这是我遇到上述异常时启动的。问题在于:
看起来Run
是一个活动
。切勿使用new
实例化活动-您不能将以这种方式实例化的活动用于任何您希望使用活动的内容。例如,用作startActivity()
的上下文
要么使用系统为您设置的活动
实例,要么使用意图
启动新的活动实例。如果您查看堆栈跟踪,空指针将抛出killeverything并继续
,因此我猜更像上下文
变量为空。这确实是一个活动。如何使用活动
实例?@Android Developer,如果上下文
为空,它将在前面的意图
构造函数中抛出。@Karl取决于您实际想要做什么。问题中没有足够的上下文(sic)来提供具体的指导,除了不使用new
@laalto实例化活动之外。我用一些额外的信息更新了问题,希望这会更有帮助。你能发布你的全部代码吗,因为很难找到你面临的问题。@Android Developer这里有很多计算,这是我在编辑中描述的重要部分。如果你认为有帮助,我可以发布代码,但我认为不会。
Run run = new Run();