3

我正在尝试在我的 Android 应用程序中使用 Navigation 和 SafeArgs 组件以及 BottomNavigationView,但我无法通过底部导航视图传递参数。

这是我的情况:

  • HomeActivity:托管所有片段并将用户ID传递给所有片段
    • FragmentA:检索用户ID并做一些事情..
    • 片段B:作为片段A
    • 片段C:作为片段A

在我的 HomeActivity 中,我设置了导航组件以在片段之间切换:

uid = "hello"
navController = Navigation.findNavController(this, R.id.nav_host_fragment)
bottom_nav?.let {
            NavigationUI.setupWithNavController(it, navController)
        }

并通过以下方式传递用户 ID:

navController.addOnDestinationChangedListener { _, destination, arguments ->
    when(destination.id) {
       R.id.navigation_storyboard -> {
       val argument = NavArgument.Builder().setDefaultValue(uid).build()
       destination.addArgument("uid", argument)
       }
    }
}

在 FragmentA 内部,我尝试使用FragmentAArgs.fromBundle(arguments!!).uid和委托属性获取数据,by NavArg()但我得到null(或只是默认值)

4

0 回答 0