Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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
View.dispatchRestoreInstanceState(View.java:9938)Android 4.0.3/4.0.4中的NullPointerException_Android_Nullpointerexception - Fatal编程技术网

View.dispatchRestoreInstanceState(View.java:9938)Android 4.0.3/4.0.4中的NullPointerException

View.dispatchRestoreInstanceState(View.java:9938)Android 4.0.3/4.0.4中的NullPointerException,android,nullpointerexception,Android,Nullpointerexception,找不到类似的问题,因此: 我有很多类似的例外报告。它没有指向我的应用程序的任何地方。我假设当应用程序试图恢复视图状态,并且传递给容器的对象为空时,可能会发生这种情况 我使用android-support-v4 lib for fragments+接口在对话框片段中存储数据。API 16的Android项目目标,使用项目API 16 根据报告,此崩溃仅出现在4.0.3和4.0.4设备上 有没有人面临过这样的问题 java.lang.RuntimeException: Unable to start

找不到类似的问题,因此: 我有很多类似的例外报告。它没有指向我的应用程序的任何地方。我假设当应用程序试图恢复视图状态,并且传递给容器的对象为空时,可能会发生这种情况

我使用android-support-v4 lib for fragments+接口在对话框片段中存储数据。API 16的Android项目目标,使用项目API 16

根据报告,此崩溃仅出现在4.0.3和4.0.4设备上

有没有人面临过这样的问题

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my/com.my.activities.MyActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3351)
at android.app.ActivityThread.access$700(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.view.View.dispatchRestoreInstanceState(View.java:9938)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2318)
at android.view.View.restoreHierarchyState(View.java:9921)
at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1625)
at android.app.Activity.onRestoreInstanceState(Activity.java:906)
at android.app.Activity.performRestoreInstanceState(Activity.java:878)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1100)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
... 12 more

提前谢谢

您是否有机会使用intent get/put extras?在日志的中间有一个null PoExtExchange,这可能是因为将额外的空值放入额外的-< /p> 我自己也遇到过这个bug。和你一样,我也只是通过崩溃报告收到这个错误。我自己从来都无法复制它。不幸的是,我还没有找到解决这个问题的办法。然而,通过GrepCode查看Android源代码,我相信我有一些线索。在PhoneWindow.restoreHierarchyState()中,在以下代码片段中调用restoreHierarchyState()时发生崩溃:

if (mActionBar != null) {
    SparseArray<Parcelable> actionBarStates =
        savedInstanceState.getSparseParcelableArray(ACTION_BAR_TAG);
    mActionBar.restoreHierarchyState(actionBarStates);
}
if(mActionBar!=null){
Sparsarray ActionBarState=
savedInstanceState.GetSparSeparaceableArray(操作条标记);
恢复性黑囊藻(ActionBar州);
}
(摘自)

我猜NPE的出现是因为ActionBarState为null。在4.1或更高版本中不会出现这种情况,因为4.1添加了ActionBarState的空检查


我真的说不出这是4.0.x操作栏的bug,android支持库的bug,还是你的操作栏/菜单配置的bug。

再次发现了一个棘手的问题

感谢比尔·布卢姆为我们揭示了问题的根源

JU重写活动的onRestoreInstanceState方法,并处理异常,如下所示

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    try{
        super.onRestoreInstanceState(savedInstanceState);
    }catch (Exception e) {
        System.out.println("Exce");
    }
}

再次感谢比尔·布鲁姆

是的,我正在使用put/get extras。我已经认为这可能是原因,这就是为什么我在对象类的非参数构造函数中初始化所有值(也和在抽象基类中一样)。我在不同的设备和Android API版本上检查了它,它没有传递空值…您是否也检查了收到错误的设备?如果不是,那么这样做似乎是个好主意-在使用extras之前,您可以运行一个检查值是否为null,并在日志中打印一些消息以确认它吗?是的,我现在在Android 4+设备上做了一些测试,它工作正常。另外,在我在非arg constructor中显式添加值初始化之前,它工作正常…@RogerAlien抱歉,我被你的答案弄糊涂了。你是说你不再收到异常,问题是特定于设备的吗?我的设备上没有此异常,但我通过GooglePlay报告系统从其他用户设备的错误报告中收到此错误。谢谢,但你建议怎么做?我将在下一版本的应用程序中试用。不幸的是,我没有解决方案。我的直觉是,这是支持库在处理Android OS 4.0.x上的2.x选项菜单时的一个错误,(我仍然在我的应用程序中使用2.x风格的选项菜单(onCreateOptions菜单,onPrepareOptions菜单)。如果是这样,唯一的解决办法是:(1)停止使用支持库,(2)删除所有选项菜单,或者(3)将所有选项菜单转换为4.x样式的操作栏项。考虑到(1)和(2)对我来说是不可接受的,而我又没有时间去做(3),我现在只是生活在这个bug中。你找到解决方案了吗?我在更高的API级别上也遇到了同样的问题不,我没有。我们最终放弃了对这些版本的支持。