Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从onWindowFocusChanged调用成员函数时不可能出现nullpointer异常_Android_Nullpointerexception - Fatal编程技术网

Android 从onWindowFocusChanged调用成员函数时不可能出现nullpointer异常

Android 从onWindowFocusChanged调用成员函数时不可能出现nullpointer异常,android,nullpointerexception,Android,Nullpointerexception,请帮助理解一个奇怪的空指针异常,它似乎只发生在特定的设备上(目前仅在不同的平板电脑上报告,例如:Nexus-7、Asus等) 从其他成员函数调用当前活动的成员函数时发生nullpointer异常: 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:

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

从其他成员函数调用当前活动的成员函数时发生nullpointer异常:

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)
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    ...
    doSomeStuff();  // Line: 194
    ...
}

private void doSomeStuff()
{
    ....
}
第194行的代码是重写的onWindowFocusChange活动接口的一部分。 它只是对无参数成员函数的调用:

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)
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    ...
    doSomeStuff();  // Line: 194
    ...
}

private void doSomeStuff()
{
    ....
}

因为我们在onWindowFocusChange函数中,ActLogBook活动实例的this指针应该是有效的,所以这里怎么可能出现空指针异常?

不知道您是否已经解决了这个问题。我刚刚遇到了一个类似的问题,因为这是唯一一个与谷歌搜索相关的问题,我想我会分享我的发现,以防它对某人有所帮助

我在同一实例上通过一个无参数方法调用另一个方法抛出了一个可复制的NPE。最终我想尝试在没有Proguard的情况下构建我的apk。突然,堆栈跟踪在方法的顶部有另一条可见的线,该方法似乎正在抛出NPE。这就更有意义了


因此,请重试,但在调试过程中不要使用Proguard。我想一定是有什么地方出现了错误,使得Proguard有时会忽略堆栈跟踪顶部的行。

不幸的是,我无法在任何测试设备或模拟设备上重现这些错误。您确定编译的类对应于该源代码吗。(您可能在编译应用程序后做了一些更改)这在多个版本上发生。在代码中始终处于相同的位置。您看到的是正确的版本吗?可能日志的版本与源代码版本不同(特别是因为您说它发生在多个版本上),而源代码版本的行号稍有不同?我会检查onWindowFocusChange()函数中的其他代码块,看看是否有任何东西可能导致NPE,并跳过第194行