Я пытаюсь использовать компоненты Navigation и SafeArgs в моем приложении Android вместе с BottomNavigationView, но я не могу передать аргументы через представление bottomnavigation.
Это мой случай:
- HomeActivity: размещает все фрагменты и передает идентификатор пользователя всем фрагментам
- FragmentA: извлекает идентификатор пользователя и делает что-то ..
- FragmentB: как FragmentA
- FragmentC: as FragmentA
В своей HomeActivity я настроил компонент навигации для переключения между фрагментами:
uid = "hello"
navController = Navigation.findNavController(this, R.id.nav_host_fragment)
bottom_nav?.let {
NavigationUI.setupWithNavController(it, navController)
}
и передал идентификатор пользователяс помощью:
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
(или просто значение по умолчанию)