Android Navigation Component + Login Flow + Nested BottomNavigationView

3.9k Views Asked by At

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?

enter image description here

2

There are 2 best solutions below

0
coroutineDispatcher On BEST ANSWER

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

0
cao siqiao On

You can use

navController.setGraph(R.navigation.xxxx)

inside some navController.

the setGraph