【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)