我有以下代码将片段添加到同一容器R.id.container
。首先我添加一个片段,然后在用户与之交互后,我添加另一个具有相同代码的片段
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.container, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
我的问题,当我小区getSupportFragmentManager().getFragments()
我可以看到两个片段。为什么replace
实际上没有替换而是添加?
答案 0 :(得分:1)
它保留了两个片段,因为
addToBackStack(null);
表示用户可以恢复到之前的状态。 如果您添加 fragment1 (使用替换),然后 fragment2 ,则仅显示 fragment2 ,但如果用户按下,则FragmentManager需要显示 fragment1 ,因此它会保留对这两个片段的引用。