FragmentManager替换vs Add

时间:2013-05-20 14:34:13

标签: android

在我的应用程序中有一个FrameLayout我正在添加各种片段

FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_content, fragment, fargmentTag);
ft.commit();

现在看来我使用ft.replace(R.id.fragment_content, fragment, fargmentTag);然后在其他地方调用

getSupportFragmentManager().findFragmentByTag(fargmentTag); 

我总是得到null

但是,如果我使用add而不是replace这个问题已得到修复,但另一个问题似乎是每个片段都添加到另一个片段的顶部,我可以看到下面的其他片段。

我更喜欢使用replace,但我需要保存的片段状态。另外需要注意的是,我没有使用addToBackStack

3 个答案:

答案 0 :(得分:4)

试试这个,它会起作用。

FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_content, fragment, fragmentTag);
ft.commitAllowingStateLoss();

答案 1 :(得分:1)

你基本上回答了自己的问题。使用addToBackStack()

答案 2 :(得分:-2)

FragmentManager:fm = getSupportFragmentManager(); fm.executePendingxxxx,试一试。