4

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

我正在使用 android-support-v4 lib 片段 + Parcelable接口将数据存储在对话框片段中。API 16 的 Android 项目目标,使用 Project 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

提前致谢!

4

3 回答 3

2

再次发现一个肮脏的工作。

感谢 Bill Blume 阐明了造成问题的原因。

只需覆盖您的活动的 onRestoreInstanceState 方法并处理如下所示的异常。

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

再次感谢比尔布鲁姆

于 2013-05-12T06:27:46.447 回答
1

我自己也遇到过这个错误。像你一样,我只通过崩溃报告收到此错误。我自己从来没有能够复制它。不幸的是,我还没有找到解决方案。不过,通过GrepCode查看Android源代码,我相信我已经掌握了一些线索。在 PhoneWindow.restoreHierarchyState() 中,崩溃发生在以下代码片段中的 restoreHierarchyState() 调用中:

if (mActionBar != null) {
    SparseArray<Parcelable> actionBarStates =
        savedInstanceState.getSparseParcelableArray(ACTION_BAR_TAG);
    mActionBar.restoreHierarchyState(actionBarStates);
}

(取自http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/com/android/internal/policy/impl/PhoneWindow.java#PhoneWindow .restoreHierarchyState%28android.os.Bundle%29 )

我的猜测是发生 NPE 是因为 actionBarStates 为空。4.1 或更高版本不会发生这种情况,因为 4.1 添加了对 actionBarStates 的空检查。

我真的不能说这是 4.0.x 操作栏、android 支持库的错误,还是您的操作栏/菜单配置中的错误。

于 2013-04-23T02:03:15.273 回答
0

您是否有任何机会使用意图获取/放置附加功能?您的日志中间有一个 NullPointerException,这可能是由于将 null 值放入 extras - Android 应用程序无法启动活动组件信息

于 2012-11-17T00:33:54.593 回答