getChildFragmentManager() и containerId

Я создаю дочерний фрагмент в коде родительского фрагмента, используя getChildFragmentManager(), containerId и метод.add(). Затем я пытаюсь заменить этот childFragment в методе onActivityCreated() кода childfragment, используя childFragmentManager(), тот же самый containerId и.replace(), но в этот момент я получаю сообщение об ошибке, сообщая, что объект фрагмента транзакции или что-то еще не может найти представление для моего контейнера Id для фрагмента "nameofchildfragclass".

Я проверил, что идентификатор контейнера в родительском элементе при создании дочернего элемента и внутри дочернего элемента при попытке заменить дочерний элемент одинаков (как и должно быть).

2 ответа

Когда вы находитесь в ChildFragment, используйте getSupportFragmentManager (или getFragmentManager, если вы не используете поддержку), а не getChildFragmentManager.

Это вернет вам менеджер фрагментов, который создал ChildFragment, который является Parent вашего ChildFragment, где вы использовали ChildFragmentManager.

Каждый фрагмент имеет getFragmentManager и getChildFragmentManager.

Фрагмент родительский: добавляет дочерний элемент с помощью childFragmentManager. (Добавленный фрагмент теперь является дочерним по отношению к этому родительскому фрагменту)

Fragment child: вызов getFragmentManager возвращает ChildFragmentManager родителя. Вызов getChildFragment даст новый FragmentManager для добавления дочернего элемента в этот фрагмент. НЕ ТО, ЧТО ВАМ НУЖНО)

Когда внутри дочернего кода, чтобы заменить ребенка, необходимо использовать

getParentFragment().getChildFragmentManager()

не

getChildFragmentManager()
Другие вопросы по тегам