恢复时解组未知类型代码异常

Unmarshalling unknown type code exception while resuming

我有一个应用程序,其中有两个片段的 tablayout,该应用程序运行良好,但是当我使用菜单按钮关闭应用程序并使用其他应用程序一段时间时,当我恢复我的应用程序时它崩溃并出现以下异常

FATAL EXCEPTION: main Process: com.example.com, PID: 5674 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.com/com.example.ui.activity.MainActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@9095b3a: Unmarshalling unknown type code 3801188 at offset 4392 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5443) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@9095b3a: Unmarshalling unknown type code 3801188 at offset 4392 at android.os.Parcel.readValue(Parcel.java:2340) at android.os.Parcel.readArrayMapInternal(Parcel.java:2614) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.Bundle.getSparseParcelableArray(Bundle.java:856) at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2033) at android.app.Activity.onRestoreInstanceState(Activity.java:1008) at android.app.Activity.performRestoreInstanceState(Activity.java:963) at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1186) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2399) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)  at android.app.ActivityThread.-wrap11(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5443)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 

我尝试禁用混淆器并添加以下代码但没有任何帮助

-keepclassmembers class * implements android.os.Parcelable { static ** CREATOR; }

我有自定义视图,但没有在其中实现 parcelable,我也从片段中剥离了所有内容,并保留了视图,即使它崩溃了,但是当我只是加载片段实例时 新 android.support.v4.app.Fragment();我没有收到错误

我遇到了同样的问题并找到了重新启动应用程序以停止崩溃的解决方案
在你的 MainActivity 中 使用:

    @Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    try {
        super.onRestoreInstanceState(savedInstanceState);
    }catch (Exception e){
        e.printStackTrace();
        Intent intent=new Intent(this,MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }
}

这是由于 bug in SearchView 自 appcompat v23.2.0 以来。

已在 v23.2.1 中修复。升级您的支持库以消除异常。