У меня есть Android-приложение, которое является основным таймером с двумя кнопками, запуска и остановки. Всякий раз, когда я дважды нажимаю кнопку «Стоп», приложение вылетает с исключительным исключением.Android Timer - Java Null Pointer Exception
Метод в вопросе:
public void stopTimer(View view) {
timerTask.cancel();
timerTask = null;
n = 0;
}
Logcat следующим образом:
01-27 20:43:01.173: E/dalvikvm(14195): could not disable core file generation for pid
14195: Operation not permitted
01-27 20:43:32.455: D/AndroidRuntime(14195): Shutting down VM
01-27 20:43:32.455: W/dalvikvm(14195): threadid=1: thread exiting with uncaught exception (group=0x40018560)
01-27 20:43:32.478: E/AndroidRuntime(14195): FATAL EXCEPTION: main
01-27 20:43:32.478: E/AndroidRuntime(14195): java.lang.IllegalStateException: Could not execute method of the activity
01-27 20:43:32.478: E/AndroidRuntime(14195): at android.view.View$1.onClick(View.java:2144)
01-27 20:43:32.478: E/AndroidRuntime(14195): at android.view.View.performClick(View.java:2485)
01-27 20:43:32.478: E/AndroidRuntime(14195): at android.view.View$PerformClick.run(View.java:9089)
01-27 20:43:32.478: E/AndroidRuntime(14195): at android.os.Handler.handleCallback(Handler.java:587)
01-27 20:43:32.478: E/AndroidRuntime(14195): at android.os.Handler.dispatchMessage(Handler.java:92)
01-27 20:43:32.478: E/AndroidRuntime(14195): at android.os.Looper.loop(Looper.java:123)
01-27 20:43:32.478: E/AndroidRuntime(14195): at android.app.ActivityThread.main(ActivityThread.java:3806)
01-27 20:43:32.478: E/AndroidRuntime(14195): at java.lang.reflect.Method.invokeNative(Native Method)
01-27 20:43:32.478: E/AndroidRuntime(14195): at java.lang.reflect.Method.invoke(Method.java:507)
01-27 20:43:32.478: E/AndroidRuntime(14195): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-27 20:43:32.478: E/AndroidRuntime(14195): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-27 20:43:32.478: E/AndroidRuntime(14195): at dalvik.system.NativeStart.main(Native Method)
01-27 20:43:32.478: E/AndroidRuntime(14195): Caused by: java.lang.reflect.InvocationTargetException
01-27 20:43:32.478: E/AndroidRuntime(14195): at java.lang.reflect.Method.invokeNative(Native Method)
01-27 20:43:32.478: E/AndroidRuntime(14195): at java.lang.reflect.Method.invoke(Method.java:507)
01-27 20:43:32.478: E/AndroidRuntime(14195): at android.view.View$1.onClick(View.java:2139)
01-27 20:43:32.478: E/AndroidRuntime(14195): ... 11 more
01-27 20:43:32.478: E/AndroidRuntime(14195): Caused by: java.lang.NullPointerException
01-27 20:43:32.478: E/AndroidRuntime(14195): at com.example.timer.MainActivity.stopTimer(MainActivity.java:56)
01-27 20:43:32.478: E/AndroidRuntime(14195): ... 14 more
01-27 20:43:35.564: I/Process(14195): Sending signal. PID: 14195 SIG: 9
01-27 20:48:05.103: D/dalvikvm(14263): GC_EXPLICIT freed 75K, 51% free 2682K/5379K, external 2357K/2773K, paused 23ms
Что я могу сделать так, что если пользователь происходит нажать на кнопку два раза подряд, приложение не будет рушиться на них? Как бы то ни было, если они нажимают стоп после того, как значение int все еще отображается. Может быть, если остановка была нажата снова, она могла бы сбрасываться на 0?
Благодарим вас за любые советы/отзывы.
'если (TimerTask! = NULL) {// то, что у вас уже есть}'? Вторая часть о том, что int не перезагружается, звучит как отдельная проблема, когда значение не обновляется в пользовательском интерфейсе. – turbo