Цепочки направлений в компонентах навигации Android - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть простой график навигации, подобный следующему:

MainFragment -> ListFragment -> DetailFragment

Как мне получить «ярлык» из MainFragment в DetailFragment, чтобы:

  • UP-навигация из DetailFragmentбудет перемещаться к ListFragment внутри графика и
  • BACK навигация из DetailFragment вернется к MainFragment (опционально, BACK может вести себя как UP)

Возможно ли это?Спасибо за предложения!

РЕДАКТИРОВАТЬ: Мое решение

Я могу просто сначала перейти к ListFragment, а затем сразу к DetailFragment, как это (я вызываю оба вызова "навигация" из MainFragment):

findNavController().navigate(MainFragmentDirections.toListFragment())
findNavController().navigate(ListFragmentDirections.toDetailFragment(data))

В соответствии с документацией , в которой говорится, что "... кнопка вверх должна функционировать идентично кнопке возврата системы", я решил не делать различий между НАЗАД иUP действия.

1 Ответ

0 голосов
/ 09 февраля 2019

Чтобы перемещаться по фрагментам с использованием компонентов навигации, вы должны связать их на графике навигации, перейдите к app-> res-> navigation-> graphName.xml (на рисунке я использую заполнители, вместо этого используйте ваши фрагменты).

Как вы можете видеть в документации для перехода от одного фрагмента к другому, вам нужно использовать эту строку Navigation.findNavController(view).navigate(R.id.viewTransactionsAction); Где viewTransactionsAction должно бытьидентификатор стрелки (на графике) от одного фрагмента к следующему.

enter image description here

Чтобы переопределить действие кнопки возврата, используйте:

@Override public boolean onSupportNavigateUp() { return Navigation.findNavController(this, R.id.nav_host_fragment).navigateUp(); }

И замените внутри навигации nav_host_fragment на идентификатор стрелки той страницы, на которую вы хотите перейти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...