在我的应用程序中,我有一个主机片段,用于一组视图,用户可以通过BottomNavigationView
浏览到这些视图。该BottomNavigationView
通过setupWithNavController
连接到我的导航控制器。
我的主机片段收到一个捆绑包,其中包含一些我希望每个片段作为捆绑包导航到(通过底部导航视图)的信息。
我当前的解决方案看起来像
mutableListOf<NavDestination>().apply {
addIfNotNull(graph.findNode(R.id.frag1))
addIfNotNull(graph.findNode(R.id.frag2))
addIfNotNull(graph.findNode(R.id.frag3))
forEach {
// args is a safe args object for this host fragment
it.addArgument("argName", NavArgument.Builder().setDefaultValue(args.argName).build())
}
}
虽然这有效,但由于我正在手动为每个目标添加参数,因此伸缩性不会很好。由于我不是手动导航到每个目的地,而是由BottomNavigationView
完成的,因此我不确定如何手动添加此捆绑包。
答案 0 :(得分:0)
navController.addOnDestinationChangedListener { controller, dest, args ->
when (dest.label) {
"YOUR_LABEL_HERE" -> {
val arg01 = NavArgument.Builder().setDefaultValue("SOME VALUE").build()
val arg02 = NavArgument.Builder().setDefaultValue("SOME OTHER VALUE").build()
dest.addArgument("KEY_NAME", arg01)
dest.addArgument("OTHER_KEY_NAME", arg02)
}
}
}
尝试一下。应该可以。