我在处理安卓碎片时遇到了很多麻烦...假设我的后退栈看起来像这样
[C]
[B]
[A]
---
按下返回按钮会弹出Fragment C
,并将Fragment B
留在堆栈顶部。现在,我如何在保持后退栈的同时将Fragment C
替换为Fragment D
?注意,在操作期间无法看到Fragment B
。
[C] <- [D] [D]
[B] -----> [B]
[A] [A]
--- ---
这样做,按下“返回”按钮会将Fragment D
弹出,留下Fragment B
在顶部。Fragment C
完全从堆栈中移除。
我将每个片段都像这样添加到堆栈中。
FragmentTransaction ft = manager.beginTransaction();
ft.replace(id, instance, getTag(instance));
ft.addToBackStack(getTag(instance));
ft.commit();
我以为这可以通过不使用addToBackStack
进行相同的调用来实现,但它只会使Fragment D
和Fragment B
重叠。
我认为这可以通过不使用
addToBackStack
进行相同的调用来实现,但这将导致Fragment D
和Fragment B
重叠。
addToBackStack
,即使从栈中弹出了该事务,该事务仍然存在,导致您的D片段与B片段同时可见。 - njzk2