Android:从返回栈中移除所有FragmentTransactions

40

我在一个选项卡中添加了一堆FragmentTransactions到后退栈,当用户选择另一个选项卡时,我想从后退栈中全部清除它们。我找不到清除后退栈内容的方法,只有弹出它们的方法,而且这些方法甚至不能返回Fragment给你,以便关闭它们。有什么建议吗?

2个回答

110
如果您将许多碎片添加到后退栈,并希望删除它们所有,可以这样做:popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)

6
了解:popBackStack()函数可在FragmentManager或SupportFragmentManager中找到。 - Tobrun
我的屏幕扩展了Fragment,但我找不到popBackStack()方法..我该怎么办? - Hitarth
3
如果使用兼容库,可以使用getSupportFragmentManager.popBackStack(),否则请使用getFragmentManager.popBackStack()。 - dermatthias
2
这个答案是可行的。但是文档上说:如果为null,则只弹出顶部状态。因此,这种行为似乎是一个bug。有人能解释一下吗? - tjlian616
在我的情况下,我已经将太多的片段添加到了回退栈中。现在性能非常慢。我尝试过使用上述方法,但它没有起作用。 - user
显示剩余2条评论

1

只需使用popBackStack()方法从后退栈中将它们移除即可。

您弹出的每个片段都与用户按下BACK按钮时完全相同,而当按下BACK按钮时,您不需要进行任何特殊的清理,对吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接