> 文章列表 > 【CrashIssue】Can not perform this action after onSaveInstanceState

【CrashIssue】Can not perform this action after onSaveInstanceState

【CrashIssue】Can not perform this action after onSaveInstanceState

今天就记录一个 发生的问题 以及解决方案 简单粗暴 尽快帮大家解决问题。具体原因大家抽时间可以搜网上有详解的原码,如果你是在activity  快退出的时候 调用过 fragment 的一些。commit()/commitNow() 这些切换的 操作情况。

那么你只需要把 这两个方法。对应改成 

commitAllowingStateLoss()/ 
commitNowAllowingStateLoss()

这样就不会发生crash 问题。 

2023-04-18 18:40:54.743 29842-29842/com.ccc E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.xxx, PID: 29842
    java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
        at androidx.fragment.app.FragmentManager.checkStateLoss(FragmentManager.java:1610)
        at androidx.fragment.app.FragmentManager.ensureExecReady(FragmentManager.java:1711)
        at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1725)
        at androidx.fragment.app.BackStackRecord.commitNow(BackStackRecord.java:317)
        at com.xxx.home.widget.LinearViewPager.setUserType(LinearViewPager.java:99)
        at com.xxx.home.xxx.setxxTabType(SxAdapter.java:165)
        at com.xxx.home.xxxActivity$5.lambda$onResult$0$com-xxx-home-xxxActivity$5(xxxActivity.java:422)
        at com.xxx.home.xxxActivity$5$$ExternalSyntheticLambda0.run(Unknown Source:8)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:226)
        at android.os.Looper.loop(Looper.java:313)
        at android.app.ActivityThread.main(ActivityThread.java:8663)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)