如何强制导航组件从头开始重绘navGraph中的片段?我已经尝试在同一个navGraph示例中使用setGraph(),但它只在第一次使用时有效。下次我在同一个navGraph示例中调用相同的代码时,它什么也不做。有什么建议吗?刷新navGraph并重新绘制片段的最佳方法是什么?
navGraph.setStartDestination(R.id.stories_nav_graph) navController.setGraph(navGraph)
pjngdqdw1#
原因:
当使用Navigation组件设置导航图时,如果您传递的navGraph示例与已用于设置图的navGraph示例相同,则navController将不会从头开始重新绘制图中的片段。
解决方案:
在调用setStartDestination和setGraph之前,膨胀navGraph的一个新示例,确保图中的所有片段都是从头开始重绘的,这是我的例子中预期的行为。
val navGraph = navController.navInflater.inflate(R.navigation.nav_graph) navGraph.setStartDestination(R.id.stories_nav_graph) navController.setGraph(navGraph)
1条答案
按热度按时间pjngdqdw1#
原因:
当使用Navigation组件设置导航图时,如果您传递的navGraph示例与已用于设置图的navGraph示例相同,则navController将不会从头开始重新绘制图中的片段。
解决方案:
在调用setStartDestination和setGraph之前,膨胀navGraph的一个新示例,确保图中的所有片段都是从头开始重绘的,这是我的例子中预期的行为。