我正在尝试在我的 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
(或只是默认值)