Как прослушать изменение фрагмента в компоненте навигации? - PullRequest
0 голосов
/ 24 мая 2019

Как добавить слушатель изменения фрагмента в новый компонент навигации?

У меня есть BottomNavigationView, в котором я использовал новый компонент навигации, следующий за официальным примером

У меня есть четыре пункта назначения в моем BottomNavigationView, у всех из них есть свои навигационные графики.

val navGraphIds = listOf(R.navigation.nav_home, R.navigation.nav_discover, R.navigation.nav_search, R.navigation.nav_my)

val controller = bottom_nav.setupWithNavController(
    navGraphIds = navGraphIds,
    fragmentManager = supportFragmentManager,
    containerId = R.id.navHostContainer,
    intent = intent
)

controller.observe(this, Observer { navController ->
    setupActionBarWithNavController(navController)
})

Я хочу иметь слушателя в моем MainActivity при изменении фрагмента в любом из 4 графиков навигации.

controller действует только при переключении между BottomNavigationView адресатами.

1 Ответ

1 голос
/ 19 июня 2019

Вы пытались использовать NavController.OnDestinationChangedListener?

private lateinit var controller: NavController // don't forget to initialize

private val listener = NavController.OnDestinationChangedListener { controller, destination, arguments ->
    // react on change
    // you can check destination.id or destination.label and act based on that
}

override fun onResume() {
    super.onResume()
    controller.addOnDestinationChangedListener(listener)
}

override fun onPause() {
    super.onPause()
    controller.removeOnDestinationChangedListener(listener)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...