Компонент навигации Android - с экранами входа - PullRequest
0 голосов
/ 29 ноября 2018

При работе с экранами входа в систему я пытаюсь выработать лучший подход - либо выполнить навигационное «действие», чтобы перейти к фрагменту входа при первом использовании (и скрыть кнопку «Назад» в текущем приложении), либо начать новое действие входа (со своим собственным графом навигации).Для первого подхода (только с использованием навигационных компонентов) я не знаю, как убрать кнопку назад без взлома «скрыть».Я пытался использовать navoptions, setpopupto и т. Д., Но это не работает.Код ниже:

val navOptions = NavOptions.Builder()
                .setPopUpTo(R.id.home_fragment, true)
                .build()

host?.navController?.navigate(R.id.action_global_signUpFragment_dest, null, navOptions)

Два вопроса: 1) Как правильно обрабатывать переход при входе в систему только с помощью компонента навигации?2) Лучше начать новый вход в систему с отдельным графом навигации?

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Другой вариант решения проблемы кнопки возврата - как я это сделал здесь .Кроме того, вместо того, чтобы показывать / скрывать нижнюю панель навигации, у меня есть два NavHostFragment, один основной полноэкранный и один, содержащийся в домашнем фрагменте (над нижней панелью навигации).

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

fun Fragment.findMainNavController(): NavController =
    Navigation.findNavController(activity!!, R.id.nav_host_fragment)

, затем перемещаюсь по основному графику.

Для меня это имеет смысл концептуально иметь родительские и дочерние графы навигации.

0 голосов
/ 29 ноября 2018

Я думаю, что первый подход лучше.Чтобы скрыть кнопку «Назад» на панели инструментов внутри signUpFragment, вы можете использовать AppBarConfiguration и указать, какие пункты назначения считаются объектами верхнего уровня.Например:

val appBarConfiguration = AppBarConfiguration.Builder(setOf(R.id.home_fragment, R.id.signUpFragment_dest)).build()
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration)

Таким образом, home_fragment и signUpFragment_dest будут считаться адресатами верхнего уровня и не будут иметь кнопки «Назад» на панели инструментов.

...