Android Компоненты навигации - Как вытащить startDestination из заднего стека? - PullRequest
0 голосов
/ 03 марта 2020

У меня есть одно приложение, которое использует Навигационный компонент Android для навигации. Когда пользователь запускает мое приложение, я хочу показать фрагмент приветствия, который позволяет ему выбрать, как он хотел бы работать сегодня (он может выбрать рабочий процесс A или рабочий процесс B).

Как только пользователь выбирает один из вариантов, он переходит к фрагменту «Выполнить работу», который позволяет ему начать работу. Если в этот момент они нажмут кнопку «Назад», я хочу закрыть приложение, а не переходить обратно к фрагменту приветствия (фрагмент приветствия отображается только при запуске приложения).

Способ настройки графика навигации было установить Фрагмент приветствия в качестве начального пункта назначения и Фрагмент Do Work в качестве другого пункта назначения на том же графике.

Когда приложение запускается, мой фрагмент приветствия отображается так, как нужно, однако, похоже, нет удобного способа запустить фрагмент «Выполнить работу» из фрагмента приветствия и вытолкнуть фрагмент приветствия из заднего стека так, что к нему нельзя перейти снова без фактического уничтожения и перезапуска приложения.

Я остановился на фрагменте приветствия, вызвав findNavController.popBackStack () и затем findNavController (). navigate ( R.id.do_work_fragment). Это, кажется, имеет желаемое поведение, однако кажется действительно странным, что приходится «вручную» вставлять задний стек. Сначала я предполагал, что это никогда не сработает, так как я полагал, что выталкивание заднего стека с одним элементом вызовет закрытие приложения, но, похоже, оно работает просто отлично.

Я переосмыслил это, и мое решение просто отлично или есть лучший способ решить этот сценарий навигации с помощью Android Компонентов навигации?

...