【问题标题】:Fatal Exception: java.lang.RuntimeException: Unable to resume activity致命异常:java.lang.RuntimeException:无法恢复活动
【发布时间】:2016-05-05 09:51:54
【问题描述】:

以下是我的日志转发

致命异常:java.lang.RuntimeException:无法恢复活动 {com.maruticourier.android/com.marutideliver.activity.MainActivity}:java.lang.IllegalStateException:onSaveInstanceState 后无法执行此操作 在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:3069) 在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3098) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1350) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:146) 在 android.app.ActivityThread.main(ActivityThread.java:5653) 在 java.lang.reflect.Method.invokeNative(Method.java) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 在 dalvik.system.NativeStart.main(NativeStart.java) 由 java.lang.IllegalStateException 引起:onSaveInstanceState 后无法执行此操作 在 android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1365) 在 android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1383) 在 android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:636) 在 android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:615) 在 com.marutideliver.activity.MainActivity.selectItem(MainActivity.java:485) 在 com.marutideliver.activity.MainActivity.onResume(MainActivity.java:810) 在 android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1198) 在 android.app.Activity.performResume(Activity.java:5620) 在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:3059) 在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3098) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1350) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:146) 在 android.app.ActivityThread.main(ActivityThread.java:5653) 在 java.lang.reflect.Method.invokeNative(Method.java) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 在 dalvik.system.NativeStart.main(NativeStart.java)

【问题讨论】:

  • 这里写上onResume方法
  • 我在哪里写 onResume 方法??
  • 这里。在 question.put 你的代码

标签: android android-activity android-fragmentactivity runtimeexception onresume


【解决方案1】:

这是支持包中的一个错误。为避免这种情况,您可以在片段事务期间使用以下操作。

transaction.commitAllowingStateLoss();

如果你用谷歌搜索,你会找到很多很好的答案。有关更多参考和替代方法,请参阅此SO post 和此SO post。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    您可能有一个非静态子类(我猜它是一个片段),您的活动在每次恢复时都无法实例化。如果您有这样的子类,只需将其设为静态即可。

    【讨论】:

    • 感谢您的回答,但如果我将子类设置为静态,则会发生很多错误,因为我在这个片段类中使用了非静态方法,所以它不起作用
    【解决方案3】:

    这可能是因为add() 方法多次与公共方法类似

     public void beginTransaction(ID id, Bundle bundle)
    

    避免使用

    fragmentmanager.begintransaction().add
    

    每次,

    也可以用这个替换

    fragmentmanager.begintransaction().replace(r.id.frame_container, fragment).commit()
    

    【讨论】:

      【解决方案4】:

      这可能是因为没有覆盖 onResume() 方法,您必须覆盖并恢复之前存储的保存实例

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-02
        • 2014-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-16
        • 2017-11-20
        • 1970-01-01
        相关资源
        最近更新 更多