当我执行getSupportFragmentManager().popBackStack();
它时,它会弹出返回堆栈并执行与弹出的返回堆栈条目相关的片段事务。
我有 3 个片段:
- FragmentA
- FragmentB
- FragmentC
我的活动在用户推广时执行 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 替换,但 Fragment A 也出现在 FragmentC 被绘制之前,并且 FragmentA 继续出现在 FragmentC 后面。
我究竟做错了什么?如何在后台不显示 FragmentA 的情况下将 FragmentB 替换为 FragmentC。