Activity :
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();
View 中的代码:
<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" />
问题是,内容并没有真正被替换-它被放在顶部(因此重叠)。
当我单击返回时,第一个片段正确显示(没有第二个片段),但是最初两个片段都是可见的(我只希望最后一个片段可见)。
我在这里想念什么?
最佳答案
您在这里做错了两件事:
xml
布局文件中的片段。您应该在布局中创建一个容器(例如FrameLayout
),然后使用FragmentTransaction
以编程方式添加片段。 FragmentTransaction.replace
期望包含该片段的容器的ID,而不是该片段的ID作为第一个参数。因此,您应该将第一个参数作为添加第一个片段的容器的ID传递。 您可以引用this link以获得更多详细信息。
关于android - fragment 不会被替换,而是放在上一个 fragment 的顶部,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14810348/