Невозможно перерисовать фрагменты 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)
Другие вопросы по тегам