Хорошей идеей является использование безопасного типа, потому что это займет у вас безопасность времени компиляции и некоторое удобство.
Эта библиотека создаст класс аргумента MyDestinationArgs
.Вы можете использовать его для построения Bundle
и передачи результата в пункт назначения таким образом
val args = DetailFragmentArgs.Builder("template_code").build().toBundle()
navController?.navigate(R.id.confirmationAction, args)
На стороне получателя вы можете извлекать данные также с использованием аргументов класса
val templateCode = SecondFragmentArgs.fromBundle(arguments).templateCode
Если мы не можемиспользовать библиотеку safeargs в некоторые сезоны
Мы можем передавать данные также в Bundle
.Предположим, вы добавили
const val ARG_TEMPLATE_CODE = "templateCode"
константу в companion object
из DetailFragment
(static final
поле в Java)
Теперь вы можете передавать данные
val args = Bundle()
args.putString(DetailFragment.ARG_TEMPLATE_CODE, "some_code")
navController?.navigate(R.id.confirmationAction, args)
Фрагмент получателя может получить данные из аргументов:
arguments?.getString(ARG_TEMPLATE_CODE)
Или, если целевой пункт назначения Activity
, вы можете получить данные из дополнительных значений намерения (ARG_TEMPLATE_CODE
константа теперь из активности пункта назначения)
intent?.extras?.getString(ARG_TEMPLATE_CODE)
Подробнее в документации здесь и здесь