片段替换删除其他片段

时间:2014-07-04 06:49:57

标签: android android-fragments

我有一个左右两个区域的活动。左侧区域用于导航,右侧用于显示详细信息。 我通过使用片段并将左侧更改添加到Backstack来解决此问题。但是在一个案例中,左边的片段被移除了,尽管我只是替换了正确的片段。

您可以在github上克隆代码:https://github.com/Ben-Ho/fragmentProblem

执行以下操作以重现问题:

  1. 启动应用
  2. 点击"打开片段B"
  3. 点击"打开片段C"
  4. 点击Android后退按钮
  5. 点击"打开片段B"
  6. 点击"打开片段C"
  7. 现在左边的片段已经消失,但不应该
  8. 片段D也是如此,但是在第一次单击片段C然后单击片段D时不会发生。

    我没有将碎片C和D添加到backstack,因为我想在用户点击后退按钮时只切换左边区域...

    左侧区域绝不能为空。它应该通过点击"打开片段B"在片段A和B之间切换。和Android Back-Button。

    你能告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:0)

然后在你的包含Activity覆盖onBackPressed():

@Override
public void onBackPressed() {
  if (getSupportFragmentManager().findFragmentByTag("FragmentC") != null) {
    // I'm viewing Fragment C

  } else {
    super.onBackPressed();
  }
}

答案 1 :(得分:0)

好的,我没有找到一个不像黑客的解决方案...... 所以这是我解决这个问题的方法:

  1. 将每个片段更改添加到backstack
  2. 将您想要返回的州命名为
  3. 在我的情况下添加一个额外的popBackStack,因为不应该访问没有片段的第一个状态
  4. 有关完整代码,请参阅此提交:

    https://github.com/Ben-Ho/fragmentProblem/commit/f08192098be7187d5f4bf08e8119ce58e60fbecc

相关问题