为什么`replace`不替换片段?

时间:2016-04-07 07:46:09

标签: android android-fragments

我有以下代码将片段添加到同一容器R.id.container。首先我添加一个片段,然后在用户与之交互后,我添加另一个具有相同代码的片段

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

我的问题,当我小区getSupportFragmentManager().getFragments()我可以看到两个片段。为什么replace实际上没有替换而是添加?

1 个答案:

答案 0 :(得分:1)

它保留了两个片段,因为

addToBackStack(null);

表示用户可以恢复到之前的状态。 如果您添加 fragment1 (使用替换),然后 fragment2 ,则仅显示 fragment2 ,但如果用户按下,则FragmentManager需要显示 fragment1 ,因此它会保留对这两个片段的引用。