Невозможно добавить несколько фрагментов в LinearLayout

Я использую 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(); 

Но он показывает только первый фрагмент. Зачем?

Solutions Collecting From Web of "Невозможно добавить несколько фрагментов в LinearLayout"

Вы можете иметь несколько фрагментов в LinearLayout .

Согласно документации ,

Если вы добавляете несколько фрагментов в один и тот же контейнер, то порядок их добавления определяет порядок, который они отображаются в иерархии представлений

Проблема с вашим кодом заключается в том, что, поскольку вы не указали теги фрагментов, он по умолчанию был идентификатором контейнера. Так как идентификатор контейнера одинаковый для обеих транзакций, вторая транзакция заменила 1-й фрагмент, а не добавила его в контейнер отдельно.

Чтобы сделать то, что вы хотите, используйте что-то вроде:

 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(); 

Я думаю, вы должны определить контейнеры 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> 

Имела та же проблема, но

  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.control_list, container, false); 

IE с использованием файла макета xml:

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

Решила мою проблему. При создании LinearList программным образом для меня тоже появился только первый фрагмент.

Это использует XML-файл для макета, к которому вы хотите добавить фрагменты.