Комментарии 8
Я пишу одно приложение, до этого опыт был стремящийся к 0. Как же я настрадался с этими фрагментами!
Приложение имеет навигационную панель (Drawer), соответственно, список корневых фрагментов. Так же требуется поддержка смартфонов\планшетов, некое подобие Master\Detail. В итоге получается, что корневой фрагмент должен содержать еще 1-2 фрагмента (Master или Master и Detail). Вложенные фрагменты — боль вдвойне, потому что у каждого childFragmentManager свой backstack.
И когда у меня был смартфон, окно Master, хотел показать Detail, я через интерфейс вызывал у MainActivity специальный метод, который заменял текущий корневой фрагмент на фрагмент Detail. Были проблемы с навигацией: куда возвращаться из фрагмента, как реализовывать стрелку "назад" (которая на самом деле "вверх") в ActionBar (каждый раз приходилось вручную включать либо меню, либо стрелку, при этом не забыть в onResume каждого фрагмент все настроить).
Вот изображение из моего вопроса на SO
В итоге я пришел к следующей схеме:
На планшетах оба фрагмента, и master, и detail, располагаются в корневом фрагменте, на смартфонах для detail я открываю новую активити с detail фрагментом.
Плюсы:
- автоматическая навигация по стрелке назад — задаю Parent Activity и все работает
- Нет проблем с backstack вложенных фрагментов
- бонус — анимация открытия активити
Недостатки:
- Взаимодействие между фрагментами все-таки хитрозадое: в "родительском" фрагменте реализую интерфейс для взаимодействия.
- В активити параметры бандлом передавать неудобно
Если кто-нибудь подскажет, как все это делается правильно, буду благодарен
Краткое руководство по созданию навигации на основе фрагментов