我一直在尝试解决有关后台管理的最奇怪的问题。
目标是有如下逻辑( fragment 用字母A,B,C表示):
A -> B, B -> C ,当按下 backPressed 时,C -> A
因为 C 可以是不同的 fragment ,当在 C 和 backPressed 中时, fragment B 永远不会出现,我将转换 A->B 添加到 backstack 并且 B->C 没有添加,只是用 C 替换 B,所以当我按 backPress,C 转到 A。
这在第一次时完美运行 - 行为符合预期,但当我连续第二次尝试时,应用程序崩溃了:
getSupportFragmentManager().popBackStackImmediate()
,抛出异常:
java.lang.IllegalStateException: Fragment already added: FragmentC
...
我已经尝试用 getSupportFragmentManager().popBackStack
替换,但只是在几纳秒后才抛出错误。
有什么原因可以解释为什么在尝试从堆栈中弹出 fragment 时会抛出添加它的错误吗?关于如何解决这个问题的任何想法?
提前致谢
最佳答案
它不是由于返回堆栈弹出而抛出异常,而是由于 (A) 已被附加而抛出异常。确保在转到 B 和 C 时使用删除或替换,以防止 A 处于添加/附加状态。
关于android - 弹出堆栈抛出 "Fragment Already Added"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58009339/