从同一容器中删除片段

时间:2016-04-06 20:40:02

标签: android android-fragments

我在同一个容器中添加了3个片段。使用addToBackStack方法添加两个片段:

    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(R.id.container, fragment);
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();

最后一个没有后台堆叠:

    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(R.id.container, fragment);
    fragmentTransaction.commit();

这三个共存很好,因为据我所知,如果使用backstack添加片段,那么当添加另一个片段时它不会被破坏。 添加最后一个没有后台堆栈,这意味着一旦我调用replace它就应该被销毁。

然而,当我打电话

时,这不会发生
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(R.id.container, myNewFragment);
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();

我仍然可以看到R.id.container中共有4个片段,这不是我所期望的。

当我在添加第4个片段时调用replace方法时,如何让第3个片段消失?

1 个答案:

答案 0 :(得分:0)

  

通过调用addToBackStack(),替换事务将保存到   返回堆栈,以便用户可以反转事务并将其恢复   按“返回”按钮可以显示上一个片段。

所以在你的情况下,你用第四个片段替换第三个片段。它意味着逆转交易他们也需要fragment3。所以他们不会破坏它。