Невозможно перерисовать фрагменты NavGraph с помощью setGraph()
Как я могу заставить компоненты навигации перерисовывать фрагменты внутри navGraph с нуля?
Я пробовал использовать setGraph() с тем же экземпляром navGraph, но это работает только в первый раз. В следующий раз, когда я вызываю тот же код с тем же экземпляром navGraph, он ничего не делает. Есть какие-нибудь предложения о том, как лучше всего обновить navGraph и перерисовать фрагменты?
navGraph.setStartDestination(R.id.stories_nav_graph)
navController.setGraph(navGraph)
1 ответ
Причина:
При настройке графа навигации с помощью компонента Navigation, если вы передаете тот же экземпляр navGraph, который уже использовался для установки графика, navController не будет перерисовывать фрагменты в графе с нуля.
Решение:
Раздувание нового экземпляра navGraph непосредственно перед вызовом setStartDestination и setGraph гарантирует, что все фрагменты графа будут перерисованы с нуля, что в моем случае является ожидаемым поведением.
val navGraph = navController.navInflater.inflate(R.navigation.nav_graph)
navGraph.setStartDestination(R.id.stories_nav_graph)
navController.setGraph(navGraph)