活动:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment1 fragment = new Fragment1();
Fragment2 fragment2 = new Fragment2();
transaction.replace(R.id.Fragment1, fragment);
transaction.addToBackStack(null);
transaction.commit();
FragmentTransaction transaction2 = getSupportFragmentManager().beginTransaction();
transaction2.replace(R.id.Fragment1, fragment2);
transaction2.addToBackStack(null);
transaction2.commit();视图中的代码:
<fragment
android:id="@+id/Fragment1"
android:name="com.landa.fragment.Fragment1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_below="@+id/include1" /> 问题是,内容并没有真正被替换-它被放在顶部(所以它是重叠的)。
当我单击back时,第一个片段会正确显示(没有第二个),但最初两个片段都是可见的(我只希望最后一个可见)。
这里我漏掉了什么?
发布于 2014-05-28 04:47:03
我也有类似的问题,但我的问题是我使用了两个不同的片段管理器:一个来自getSupportFragmentManager(),另一个来自getFragmentManager()。如果我使用SupportFragmentManager添加一个片段,然后尝试用FragmentManager替换该片段,则该片段将被添加到顶部。我需要更改代码,以便使用相同的FragmentManager,这就解决了这个问题。
发布于 2013-02-11 18:50:56
android developer站点建议使用FrameLayout在运行时动态加载片段。您已经在xml文件中对片段进行了硬编码。因此,不能在运行时删除它,如此链接中所述:
http://developer.android.com/training/basics/fragments/creating.html
此链接显示了如何通过您的程序添加片段:
http://developer.android.com/training/basics/fragments/fragment-ui.html
发布于 2013-02-11 18:47:30
您可以在替换片段之前清除backStack:
FragmentManager fm = getActivity().getSupportFragmentManager();
for (int i = 0; i < fm.getBackStackEntryCount(); i++) {
fm.popBackStack();
}
// replace your fragmentshttps://stackoverflow.com/questions/14810348
复制相似问题