首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从onWindowFocusChanged调用成员函数时不可能出现空指针异常

从onWindowFocusChanged调用成员函数时不可能出现空指针异常
EN

Stack Overflow用户
提问于 2012-10-23 16:10:24
回答 1查看 406关注 0票数 2

请帮助理解一个奇怪的无空指针异常,它似乎只发生在特定的设备上(目前只报告在不同的平板电脑上,例如: Nexus-7,Asus,.)。

当从其他成员函数调用当前活动的成员函数时,会出现空指针异常:

代码语言:javascript
复制
10-22 13:50:09.190 E/AndroidRuntime(4445): FATAL EXCEPTION: main
10-22 13:50:09.190 E/AndroidRuntime(4445): java.lang.NullPointerException
10-22 13:50:09.190 E/AndroidRuntime(4445): at com.plasmobit.CosmicPatrol.ActLogBook.onWindowFocusChanged(SourceFile:194)
10-22 13:50:09.190 E/AndroidRuntime(4445): at com.android.internal.policy.impl.PhoneWindow$DecorView.onWindowFocusChanged(PhoneWindow.java:2366)
10-22 13:50:09.190 E/AndroidRuntime(4445): at android.view.View.dispatchWindowFocusChanged(View.java:5740)
10-22 13:50:09.190 E/AndroidRuntime(4445): at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:851)
10-22 13:50:09.190 E/AndroidRuntime(4445): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2557)
10-22 13:50:09.190 E/AndroidRuntime(4445): at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 13:50:09.190 E/AndroidRuntime(4445): at android.os.Looper.loop(Looper.java:137)
10-22 13:50:09.190 E/AndroidRuntime(4445): at android.app.ActivityThread.main(ActivityThread.java:4424)
10-22 13:50:09.190 E/AndroidRuntime(4445): at java.lang.reflect.Method.invokeNative(Native Method)
10-22 13:50:09.190 E/AndroidRuntime(4445): at java.lang.reflect.Method.invoke(Method.java:511)
10-22 13:50:09.190 E/AndroidRuntime(4445): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-22 13:50:09.190 E/AndroidRuntime(4445): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-22 13:50:09.190 E/AndroidRuntime(4445): at dalvik.system.NativeStart.main(Native Method)

第194行的代码是重写的onWindowFocusChange活动接口的一部分。它只是对无参数成员函数的调用:

代码语言:javascript
复制
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    ...
    doSomeStuff();  // Line: 194
    ...
}

private void doSomeStuff()
{
    ....
}

因为我们在onWindowFocusChange函数中,所以ActLogBook活动实例的这个指针应该是有效的,所以这里有一个空指针是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2013-12-01 10:46:58

不知道你有没有想过这件事。我刚刚遇到了一个类似的问题,因为这是唯一相关的谷歌搜索,我想我会分享我的发现,以防它有任何帮助的人。

通过对同一实例上的另一个方法进行无论证的方法调用,我抛出了一个可重复的NPE。最后,我想试着在没有守卫的情况下建立我的apk。突然,堆栈跟踪在顶部有另一行可见,从方法内部可以看到,该方法似乎正在抛出NPE。这就更有意义了。

因此,请再试一次,但在调试过程中请不要使用Pro卫士。我想一定是某个地方的错误,使得Proguard有时忽略了堆栈顶部的行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13034811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档