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/

    10-10 23:29
    查看更多