我在同一个容器中添加了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个片段消失?
答案 0 :(得分:0)
通过调用addToBackStack(),替换事务将保存到 返回堆栈,以便用户可以反转事务并将其恢复 按“返回”按钮可以显示上一个片段。
所以在你的情况下,你用第四个片段替换第三个片段。它意味着逆转交易他们也需要fragment3。所以他们不会破坏它。