簡體   English   中英

導航組件:通過底部導航將捆綁包傳遞到目標

[英]Navigation Component: Passing bundles to destinations via Bottom Navigation

在我的應用程序中,我有一組用戶可以通過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完成,我不知道如何手動添加此捆綁包。

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

嘗試這個。 它應該工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM