Компонент навигации: передать safeArgs из действия во фрагмент - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть два графика, поэтому первый граф перемещается из одного фрагмента в действие, передавая safeArgs в действие.

val action = MyFragmentDirections.actionMyActivity(arg1, arg2)
Navigation.findNavController(view).navigate(action)  

Теперь во втором я хочу передать эти аргументы из MyActivity вфрагмент, который принадлежит этому действию.

Я могу получить аргументы:

val args = MyActivity.fromBundle(intent.extras)

Проблема в том, что для этого действия нет файла Directions, поэтому я не могу передатьаргументы.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Навигация 1.0.0-alpha07 исправлен запрос функции для передачи аргументов в начальный пункт назначения графика.

Чтобы использовать это, вам понадобитсяна:

  1. Удалите атрибут app:navGraph из вашего NavHostFragment
  2. Вызова findNavController(R.id.your_nav_host_fragment).setGraph(R.navigation.your_graph, intent.extras)

Использование R.id вашего NavHostFragment и R.navigation, которые у вас ранее были в теге app:navGraph.Передав аргументы в вызов setGraph, ваш начальный пункт назначения получит аргументы напрямую, без повторного вызова navigate (что по умолчанию создаст новый экземпляр пункта назначения в вашем заднем стеке - не то, что вам нужно).

0 голосов
/ 11 декабря 2018

Не знаю, рекомендуется ли это, но оно работает:

val args = MyActivity.fromBundle(intent.extras)
navController.navigate(R.id.myActivityFragment, args.toBundle())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...