java - Android 定时器 - Java 空指针异常

标签 java android nullpointerexception

我有一个 Android 应用程序,它是一个基本计时器,有两个按钮:开始和停止。每当我连续按下停止按钮两次时,应用程序就会崩溃并出现空指针异常。

有问题的方法是:

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在调用 timerTask.cancel(); 之前不为空

if (timerTask != null){
    timerTask.cancel();
    timerTask = null;
}

关于java - Android 定时器 - Java 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21443281/

相关文章:

java - 找到 GC overhead limit exceeded 异常来源的正确方法

java - 禁用 spring security https 重定向

java - 在 libgdx java 中运行时旋转粒子

java - 我收到两个 NullPointerExceptions,我不确定如何解决

java - ResultSet 抛出 NullPointers,但 next() 返回 true

Java - 同步 List 上的 getSize()

java - Android 线程 - 从另一个线程运行一个线程并等待处理程序消息

java - 允许用户从画廊中选择图像以上传到 Activity 中的 ImageView ?

android - NFC:如何告诉我的应用程序打开 vCard 而不是联系人应用程序?

java - 将 'dryRun' 设置为 true 时,BigQuery 客户端库抛出 NPE