Какие виды навигации существуют при работе с FragmentManager в Android
Что проверяют
Понимаете ли вы, что FragmentManager это про транзакции и бэкстек, а не про набор методов, и знаете ли места, где ломается жизненный цикл. Следом уточняют, чем add отличается от replace и что делать с падением при коммите после onSaveInstanceState.
Как отвечать
Всё делается транзакцией: supportFragmentManager.beginTransaction() ... .commit() или commit { } из fragment-ktx. Операции:
add: фрагмент добавляется в контейнер, предыдущий остаётся живым и видимым. Так строят наложение экранов и раскладки на планшете;replace: убирает то, что было в контейнере, и ставит новое. БезaddToBackStackпрежний фрагмент уничтожается насовсем;addToBackStack(name): транзакция попадает в бэкстек, кнопка «назад» её откатывает. Программно этоpopBackStack(), с именем или флагомPOP_BACK_STACK_INCLUSIVE;hideиshow: фрагмент остаётся в менеджере, меняется только видимость, вью жива;attachиdetach: вью уничтожается и создаётся заново, сам фрагмент живёт дальше. Удобно для вкладок.
Назовите сопутствующее: setReorderingAllowed(true) для корректных анимаций и переходов, FragmentContainerView вместо FrameLayout, commitNow() там, где результат нужен синхронно, commitAllowingStateLoss() как крайняя мера. Данные между фрагментами идут через Fragment Result API (setFragmentResult, setFragmentResultListener) или общую ViewModel активности, а не прямыми ссылками.
Поверх работает Navigation Component: NavHostFragment, граф в XML, NavController.navigate(), аргументы через Safe Args, диплинки. Внутри он делает те же транзакции.
Где спотыкаются
Подписываются на LiveData или Flow с this вместо viewLifecycleOwner. После возврата из бэкстека вью пересоздаётся, подписка дублируется, обработчик срабатывает дважды.
Коммитят транзакцию из асинхронного колбэка, пришедшего после onSaveInstanceState, и получают IllegalStateException. Такие операции привязывают к жизненному циклу, а не глушат через commitAllowingStateLoss().
Выбирают replace там, где нужен add, и удивляются, что при возврате список прокручен в начало: вью пересоздана, состояние потеряно.