0

在我的应用程序中,我有一组视图的主机片段,用户可以通过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我不确定如何手动添加此捆绑包完成。

4

1 回答 1

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)
                }
            }
        }

尝试这个。它应该可以正常工作。

于 2019-05-29T08:11:13.423 回答