B, B -> C ,当按下 backPressed 时,C -> A 因为 C-6ren">
gpt4 book ai didi

android - 弹出堆栈抛出 "Fragment Already Added"异常

转载 作者:行者123 更新时间:2023-11-29 02:18:36 25 4
gpt4 key购买 nike

我一直在尝试解决有关后台管理的最奇怪的问题。

目标是有如下逻辑( 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com