Компонент навигации Android + поток входа в систему + вложенный вид снизу Navigation
Я борюсь за создание навигации, как на изображении ниже, с компонентом навигации Android.
Мне нужен "поток входа в систему", проверьте, вошел ли пользователь в систему, а затем перейдите к основной части приложения (также очищая backstack). Основная часть содержит BottomNavigationView с тремя вкладками. Но если я нажму на значок настроек на панели инструментов, я также хочу отобразить полноэкранный фрагмент настроек.
Нужно ли было два NavHostFragment с отдельными навигационными графами? Если да, как я могу их объединить, а также иметь правильную обратную навигацию?
Любые идеи, как реализовать навигацию, как это с компонентами навигации Android?
1 ответ
Прежде всего, вы можете проверить условную навигацию
Во-вторых, вы можете сделать это с помощью только одного nav_graph
. Но тебе нужен только одинActivity
для этого. После этого вы можете проверить это так:
navController.addOnDestinationChangedListener { _, destination, _ ->
if(destination.id == R.id.mainFragment){
if(userIsLoggedIn()){
//start LoginFragment
//hide bottom navigation
}else{
//show bottom navigation
}
}
}
Но ваш стартовый фрагмент должен быть MainFragment
и нет LoginFragment
Интересно, почему вы использовали фрагмент везде? Фрагменты полезны, но не всегда. Он не откроется в полноэкранном режиме, если вы используете тот же контейнер для вашего фрагмента. Я думаю, что ваша проблема будет решена, если вы объявите страницу настроек как активность.
Кстати, ваша проблема может быть решена, если вы установите match_parent на высоту вашего контейнера и установите видимость BottomNavigationView. Примечание: если bottonNavView скрыт, ваш контейнер должен быть выровнен по дну
Вы можете использовать
navController.setGraph(R.navigation.xxxx)
внутри некоторых navController
.