Всем пример. Ребята, вы тут с фрагментами лучше всего дружите, подскажите пожалуйста. У меня табы без вложенной навигации. (т.е. и табы и роутер добавляют фрагменты в один контейнер). Переключение по табам вызывает newRootScreen (сбрасывает весь стек и создает фрагмент кокретного таба). Навигация - обычный navigateTo, backTo, back
Задача такая - когда на экране фрагмент не относящийся к табам - убрать подсведку табов.
Чтобы определить событие изменения фрагмента в корневом фрагменте (где лежит навигатор) пробовал использовать childFragmentManager.addOnBackStackChangedListener
- не вызывается после изменений адекватно
Также пробовал переопределить метод навигатора
override fun applyCommands(commands: Array<out Command>) {
super.applyCommands(commands)
val curFragment = childFragmentManager.findFragmentById(getContainerId())
when (curFragment) {
is StoriesFragment -> bottomNavigationView?.checkItem(R.id.action_stories)
is RatingFragment -> bottomNavigationView?.checkItem(R.id.action_rating)
is SpecialistsFragment -> bottomNavigationView?.checkItem(R.id.action_specialists)
is EventsFragment -> bottomNavigationView?.checkItem(R.id.action_events)
is MessagesFragment -> bottomNavigationView?.checkItem(R.id.action_messages)
else -> bottomNavigationView?.uncheckAllItems()
}
}
Получается заторможение - currentFragment как будто до applyCommands, хотя значение устанавливается после super.applyCommands (то есть я кликаю на один таб, или перехожу на экран, а подсведка включается как для предыдущего состояния). Магия какая-то. Как решить такой кейс?