问题
I'm struggle building a Navigation, like on the image below, with the Android Navigation Component.
I need a "Login Flow", check if the user is logged in and then navigate to the main part of the app (also clearing the backstack). The main part contains a BottomNavigationView with three tabs. But if I click on a settings icon on the toolbar, I also want to display a fullscreen SettingsFragment.
Did I need two NavHostFragments with separate navigation graphs? If yes, how can I combine them and also have a proper backNavigation?
Any ideas how realize a navigation like this with the android navigation components?
回答1:
First of all you can check Conditional Navigation
Second of all, you can do it with only one nav_graph. But you need only one Activity for this. After that, you can check in it like this:
navController.addOnDestinationChangedListener { _, destination, _ ->
if(destination.id == R.id.mainFragment){
if(userIsLoggedIn()){
//start LoginFragment
//hide bottom navigation
}else{
//show bottom navigation
}
}
}
But your starter fragment should be MainFragment and not LoginFragment
回答2:
You can use
navController.setGraph(R.navigation.xxxx)
inside some navController.

来源:https://stackoverflow.com/questions/55470088/android-navigation-component-login-flow-nested-bottomnavigationview