无法将多个片段添加到LinearLayout

fer*_*988 10 android android-linearlayout android-fragments

我正在使用具有垂直方向的LinearLayout来列出片段.我以编程方式将片段添加到容器中,如下所示:

FragmentTransaction ft = fragmentManager.beginTransaction();

Fragment fragment1 = new Fragment();
ft.add(R.id.llContainer, fragment1);

Fragment fragment2 = new Fragment();
ft.add(R.id.llContainer, fragment2);

ft.commit();
Run Code Online (Sandbox Code Playgroud)

但它只显示第一个片段.为什么?

yin*_*ash 19

你可以有一个多个片段LinearLayout.

根据文件,

如果要将多个片段添加到同一容器中,则添加它们的顺序将决定它们在视图层次结构中的显示顺序

您的代码存在的问题是,由于您未指定片段标记,因此默认为容器ID.由于两个事务的容器ID相同,因此第二个事务替换了第一个片段,而不是将它分别添加到容器中.

要做你想做的事,请使用以下内容:

FragmentTransaction ft = fragmentManager.beginTransaction();

Fragment fragment1 = new Fragment();
ft.add(R.id.llContainer, fragment1, "fragment_one");

Fragment fragment2 = new Fragment();
ft.add(R.id.llContainer, fragment2, "fragment_two");

ft.commit();
Run Code Online (Sandbox Code Playgroud)

  • 我有同样的问题,但这并没有解决它.我为每个片段添加了不同的标签,但看起来它们彼此重叠.知道为什么吗? (2认同)

Igo*_*pov 9

我想你必须在你的布局中为每个片段定义separe容器.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false"
    android:orientation="vertical">

    <FrameLayout
        android:id="@+id/content_secondary"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">
    </FrameLayout>

     <FrameLayout
         android:id="@+id/content_primary"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_weight="1" >
     </FrameLayout>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)