【问题标题】:Using FragmentManager to always return to the same fragment使用 FragmentManager 总是返回到同一个片段
【发布时间】:2015-12-26 10:38:09
【问题描述】:

我正在开发一个应用程序,其中包含带有多个选项卡的 NavigationDrawer,这些选项卡调用不同的片段。

  • 假设我有片段 A、B、C。

  • 在创建 Activity 时,片段容器中会填充片段 A。

  • 我想以某种方式保存对该片段的引用,当我导航到其他片段时,我将通过 onBackPress() 返回片段 A。

  • 片段 A 不会被破坏,这一点很重要。

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

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

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

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

虽然期望的结果是:

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

我一定遗漏了一些东西,希望能得到一些帮助。

谢谢

【问题讨论】:

    标签: java android android-fragments fragmentmanager


    【解决方案1】:

    覆盖你的 onBackPressed()。

    然后使用带有标志的popBackstackImmediate:POP_BACK_STACK_INCLUSIVE

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

    【讨论】:

      【解决方案2】:

      是的.. 这是预期的行为。您必须在每个事务之前添加 addToBackStack() 才能在回压时获取片段

      你的流程应该是这样的

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

      【讨论】:

      • 我确实尝试过,但是正如您在片段 C 上的 onBackPress() 之后使用此解决方案看到的那样,它返回片段 B,而不是 A。
      猜你喜欢
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 2015-08-26
      • 1970-01-01
      相关资源
      最近更新 更多