Я создаю несколько экземпляров фрагмента с циклом for. В каждом фрагменте мне нужно добавить еще один набор дочерних фрагментов. Для этого мне нужно найти правильный контейнер. Если я использую идентификатор контейнера, все дочерние фрагменты добавляются к первому родительскому фрагменту вместо их собственных родительских фрагментов.
В моем основном фрагменте:
for (....) {
ParentFragment parentFragment = new ParentFragment();
parentFragment.setSomeData(data);
fragmentTransaction.add(R.id.main_fragment_container, parentFragment, data);
}
fragmentTransaction.commit();
Теперь у меня есть N родительских фрагментов.
Внутри каждого ParentFragment:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
ChildFragment childFragment = new ChildFragment();
childFragment.setSomeData(data);
fragmentTransaction.add(R.id.parent_fragment_container, childFragment).commit();
}
Проблема в том, что все экземпляры ChildFragment
добавляются в первый ParentFragment, потому что "R.id.parent_fragment_container" является константой для всех ParentFragment. Он не меняется для каждого экземпляра ParentFragment.
Поскольку у меня есть уникальный тег для каждого экземпляра ParentFragment, могу ли я искать контейнер, используя этот тег вместо R.id.parent_fragment_container
?
Определения XML:
fragment_main.xml:
<LinearLayout
android:id="@+id/main_fragment_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
fragment_parent.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent_fragment_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>