在我的应用程序中,我有一个主机片段,用于一组视图,用户可以通过BottomNavigationView
导航到该视图。此BottomNavigationView
通过setupWithNavController
连接到我的NAV控制器。
我的主机片段收到了一个捆绑包,其中有一些我希望每个片段都会收到的信息,因为它被导航到(通过底部nav视图(作为捆绑包。
我当前的解决方案看起来像
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
完成,我不确定如何手动添加此捆绑包。
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)
}
}
}
尝试一下。它应该正常工作。