android 无法使用setGraph()重绘NavGraph片段

k4emjkb1  于 2023-04-04  发布在  Android
关注(0)|答案(1)|浏览(100)

如何强制导航组件从头开始重绘navGraph中的片段?
我已经尝试在同一个navGraph示例中使用setGraph(),但它只在第一次使用时有效。下次我在同一个navGraph示例中调用相同的代码时,它什么也不做。有什么建议吗?刷新navGraph并重新绘制片段的最佳方法是什么?

navGraph.setStartDestination(R.id.stories_nav_graph)
navController.setGraph(navGraph)
pjngdqdw

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)

相关问题