导航组件:通过底部导航将捆绑包传递到目的地



在我的应用程序中,我有一个主机片段,用于一组视图,用户可以通过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)
                }
            }
        }

尝试一下。它应该正常工作。

最新更新