10

在我的应用程序中有一个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.

4

3 回答 3

4

试试这个,它会工作。

FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_content, fragment, fragmentTag);
ft.commitAllowingStateLoss();
于 2013-05-20T14:56:10.663 回答
1

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

于 2013-05-20T14:37:32.797 回答
-2

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

于 2016-05-04T12:01:15.433 回答