使用 FragmentManager 总是 return 到同一个片段

Using FragmentManager to always return to the same fragment

我正在开发一个包含多个选项卡的 NavigationDrawer 的应用程序,它调用不同的片段。

我尝试在第一笔交易中使用 addToBackStack() 实现它,但它仅在导航到另一个片段时有效:

A -> B -> onBackPress() -> A

但是当我导航到 more 时它不能正常工作:

A -> B -> C -> onBackPress() -> C 

虽然期望的结果是:

A -> B -> C -> onBackPress() -> A

我一定是遗漏了什么,希望能得到一些帮助。

谢谢

是的..这是预期的行为。您必须在每个事务之前添加 addToBackStack() 以在 backpress

时获取片段

你的流程应该是这样的

A (addToBackStack())-> B-> C -> onBackPress() -> B ->onBackPress() -> A.

覆盖你的 onBackPressed()。

然后使用带标志的 popBackstackImmediate:POP_BACK_STACK_INCLUSIVE

这将弹出所有后台堆栈条目,直到找到 popBackstackImmediate() 中提供的标签。 简而言之,在 onBackPressed 中使用 popBackstackImmediate 并为其提供 Fragment A 的 Tag 以及标志 POP_BACK_STACK_INCLUSIVE