启动Android活动会产生NullPointerException

时间:2014-11-17 13:45:26

标签: java android

我有一个活动,LookForGPS,它启动另一个活动,运行。启动Run后,LookingForGPS无法完成,而是在运行中不断更新一些TextView:

Run run = new Run();
if(runHasBeenStarted)run.getAndSetValues(someParameters, this);

据我了解,this会返回LookingForGPS活动。但是,过了一会儿(当参数是某个值时)我想开始一个新的活动,PostRun。从Run实例的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活动都会被实例化(我检查它是否实际上已经首先启动,它是由用户独立启动的)还是getAndSetValues方法调用inside Run,给出一堆参数。 getAndSetValues然后执行一些计算并更新TextViews活动中的一些Run(一切正常)。还执行计算以查看是否已满足某个条件。如果是的话,postRun活动应该被启动,这是我遇到上述例外的时候。

1 个答案:

答案 0 :(得分:1)

问题在于:

Run run = new Run();

看起来RunActivity。永远不要使用new实例化活动 - 您不能将实例化的活动用于您想要使用活动的任何内容。例如,要用作Context的{​​{1}}。

使用系统为您设置的startActivity()实例,或使用Activity启动新的活动实例。