什么时候可以安全地调用popBackStack

时间:2018-08-04 08:55:10

标签: android fragmentmanager

我遇到了可怕的java.lang.IllegalStateException,在onSaveInstanceState异常之后无法执行此操作。

我正在尝试将顶部片段弹出后栈。我认为在活动恢复后可以安全地执行此操作,但是以下堆栈跟踪(已编辑)显示了其他情况:

android.support.v4.app.FragmentManagerImpl.checkStateLoss (Unknown Source)
android.support.v4.app.FragmentManagerImpl.popBackStack (Unknown Source)
x.MainActivity$2$1.apply (Unknown Source)
x.MainActivity.onResume (Unknown Source)
android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1249)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:755)

所以,我的问题是,什么时候可以安全地从栈顶弹出最上面的片段?如何检测到它是安全的?

1 个答案:

答案 0 :(得分:0)

唯一可以安全调用的时间是在onPostResume之后。

您可以使用标志在onPause之后和onPostResume之前跳过对它的调用,也可以保留在onPostResume中执行的操作队列。