显示java.lang.NullPointerException

时间:2010-10-06 06:11:48

标签: java android nullpointerexception

我的Android应用程序的用户报告他们在有来电时收到强制关闭消息。

我有一个服务接收器和一个电话状态监听器类来确定电话的状态。当状态为“CALL_STATE_RINGING”时,我在主Activity中调用stopAllPlayback()方法。此时用户报告“强制关闭”消息。

你能帮我确定一下问题所在吗?我是Java的新手,所以我不能100%确定如何根据堆栈跟踪进行故障排除。

这是堆栈跟踪:

java.lang.NullPointerException
at com.tdoo.toodoo.DroidGap.stopAllPlayback(DroidGap.java:190)
at com.tdoo.toodoo.MyPhoneStateListener.onCallStateChanged(MyPhoneStateListener.java:21)
at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:319)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4701)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)

更新:我刚刚能够通过将手机置于很大的压力下(使用adb shell monkey),然后拨打我的手机来自行复制错误。似乎这个错误发生在速度较慢的手机上,但我的Droid Incredible明显更快。

这会给任何人任何新想法吗?

1 个答案:

答案 0 :(得分:1)

  

com.tdoo.toodoo.DroidGap.stopAllPlayback(DroidGap.java:190)

这一行表示NPE正在从该确切的行中抛出。我认为DroidGap是你的代码,你想要做的是查看在该行调用的方法。如果幸运的话,只有一个。

因此,如果该代码如下:

foo.bar();

然后foonull

有了这些信息,您需要确定foo null的方式。不幸的是,如果您在同一行上调用了许多方法或执行了许多成员访问,那么任务就会复杂得多。