【发布时间】:2015-07-06 15:43:25
【问题描述】:
当我执行getSupportFragmentManager().popBackStack(); 时,它会弹出回栈并执行与弹出回栈条目关联的片段事务。
我有 3 个片段:
- 片段A
- 片段B
- 片段C
我的活动在用户推广时执行 3 次交易:
- 首先将片段 A 添加到我的容器中。
- 然后分离 FragmentA 并添加 FragmentB。并且交易被添加到后台堆栈。
- 然后我想要 FragmentC 仅替换 fragmentB 并更改返回堆栈条目,以便当用户按下返回按钮时,FragmentA 应该显示出来。
这是我执行事务 3 的代码:
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
fm.popBackStack();
ft.remove(fragmentB)
.add(R.id.container, fragmentC, tag)
.addToBackStack(null)
.commit();
事务 1 和 2 似乎运行良好。但是,当我尝试执行事务 3 时,发生的情况是 FragmentB 被 FragmentC 替换,但在 FragmentC 被绘制之前,Fragment A 也出现了,并且 FragmentA 继续出现在 FragmentC 后面。
我做错了什么?如何在后台不显示 FragmentA 的情况下将 FragmentB 替换为 FragmentC。
【问题讨论】:
-
popBackStack()仅pops/removes最后一个fragment添加到queue并且不执行任何进一步的操作。你真正想达到什么目标? -
@hrskrs 你是对的!只是这似乎正在发生。我已将问题更改为包含代码 sn-p 和描述性工作。
标签: android android-fragments fragment-backstack fragmentmanager