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

时间:2019-05-03 15:17:08

标签: android android-architecture-components android-jetpack android-bottomnav android-bottom-nav-view

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

1 个答案:

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

尝试一下。应该可以。