2

У меня есть 2 фрагмента внутри родительского фрагмента. В OnCreateView() родительского фрагмента я пытаюсь показать эти фрагменты через replace(int, Fragment). Как я понимаю, FragmentTransaction#commit() вызывается асинхронно.Android заменить фрагмент внутри другого фрагмента

Таким образом, если пользователь быстро нажмет кнопку назад - система уничтожит родительский фрагмент (он называет onPause(), onStop(), onDestroyView(), onDestroy()) и асинхронный заменяющий задачу не получится - родительский вид разрушается и система выбрасывает "IllegalArgumentException : Для фрагмента MyFragment не найдено никакого представления ". Я использую библиотеку поддержки.

Итак, как я могу управлять этим случаем? Буду очень благодарен за любую помощь.

ответ

1

Я решил свою проблему. Для вложенных фрагментов следует использовать getChildFragmentManager() вместо getFragmentManager(). ChildFragmentManager, как представляется, отслеживает жизненный цикл родительского фрагмента и отменяет запланированные коммиты, если родительский фрагмент будет уничтожен.