使用 FragmentManager 总是 return 到同一个片段
Using FragmentManager to always return to the same fragment
我正在开发一个包含多个选项卡的 NavigationDrawer 的应用程序,它调用不同的片段。
假设我有片段 A、B、C。
在创建 activity 片段容器时会填充片段 A。
我想以某种方式保存对此片段的引用,当我导航到其他片段时,我将通过 onBackPress() 返回到片段 A。
片段A不被破坏很重要
我尝试在第一笔交易中使用 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
我正在开发一个包含多个选项卡的 NavigationDrawer 的应用程序,它调用不同的片段。
假设我有片段 A、B、C。
在创建 activity 片段容器时会填充片段 A。
我想以某种方式保存对此片段的引用,当我导航到其他片段时,我将通过 onBackPress() 返回到片段 A。
片段A不被破坏很重要
我尝试在第一笔交易中使用 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