在我的应用程序中有一个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
。
答案 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
,试一试。