У меня есть активность, LookingForGPS, которая запускает другое действие, Run. После запуска Run, LookingForGPS не заканчивается, а постоянно обновляет некоторые TextViews в Run:Запуск активности Android дает NullPointerException
Run run = new Run();
if(runHasBeenStarted)run.getAndSetValues(someParameters, this);
В моем понимании, this
возвращает активность LookingForGPS. Однако через некоторое время (когда параметры являются определенным значением) я хочу начать новую активность, PostRun. Следующий метод вызывается из getAndSetValues экземпляра выполнения в:
private void killEverythingAndProceed(Context context){
Intent finishRun = new Intent(context, PostRun.class);
//putting some extras into the intent
startActivity(finishRun);
}
Затем я получаю NullPointerException на линии startActivity:
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)
Что я делаю не так ужасно? Я думаю, что это недостаток знаний об объектно-ориентированном программировании, вызывающий это. Это не дополнительные действия, вызывающие его, и контекст должен быть правильным, так как он работает для другого метода из того же экземпляра.
Edit: подробное объяснение
LookingForGPS активность имеет LocationManager (не используя услугу, поскольку он имеет некоторые ограничения, которые слишком сложны для меня работать вокруг). Каждый раз, когда вызывается onLocationChanged
, создается событие Run
(я проверяю, действительно ли он был запущен первым, он запускается пользователем независимо от LocationManager), и вызывается метод getAndSetValues
внутри Run
, дающий кучу параметров. getAndSetValues
затем выполняет некоторые вычисления и обновляет некоторые TextViews
в действии Run
(все работает отлично). Также выполняется расчет, чтобы убедиться, что выполнено определенное условие. Если бы это было так, то должно было начаться действие postRun
, то есть когда я столкнулся с указанным выше исключением.
Можете ли вы опубликовать весь свой код, потому что слишком сложно найти проблему, с которой вы сталкиваетесь. – hardartcore
@ Android-разработчик действительно очень много расчетов, важная часть, которую я описал в своем редактировании. Я могу опубликовать код, если вы думаете, что это поможет, но я не думаю, что это будет. – Karl