Single Activity и BottomNavigationView
Надумываю перейти на Single Activity style. Возникают следующие вопросы:
- Как быть с DrawerMenu / ToolBar / BottomNavigatioView
Например, есть вложенные фрагменты в которых мы должны показывать в место бургера кнопку назад и в этом фрагменте не должны быть никаких BottomNavigationView и DrawerMenu.
Как они скрываются? Может у Navigation component или у чего то еще есть написанные методы для реализации этого поведения? Или все же нужно подписаться на "FragmentChangeListener" и самому рулить всеми состояниями "общих" контролов (BottomNavigationView & DrawerMenu). + еще где то нужно показывать Toolbar, где-то нет, еще в каком то фрагменте он может быть совсем других форм и содержания...
- Стоит ли оно того?
Ответы (1 шт):
Никаких общих компонентов нет на эту тему. Вы должны сами "рулить" всем этим.
Вы можете создать какой-то интерфейс вроде такого:
interface ToolBarListener {
void setToolbar(toolbarTitle: String)
// так же могут быть и другие методы вроде этого.
}
реализовать его в Activity и передавать его экземпляр в каждый фрагмент и когда фрагмент инициализируется то задает состояние Activity.
Если состояние намного более сложное чем просто тайтл или наличие бургера, то я бы создал штуку вроде такой:
interface ActivityStateListener {
void setActivityState(state: ActivityState)
// так же могут быть и другие методы вроде этого.
}
class ActivityState {
String toolbarTitle;
boolean isHamburgerVisible;
boolean isBottomNavVisisble;
boolean isLockNavDrawer;
// и так далее
}
Стоит ли? Ну это вопрос субъективный. С фрагментами работать легче, но сказать, что вы получите какой-то кардинальный прирост, думаю что нет. Если ваш проект не большой и вам хочется получить это удобство, то может и стоит.