Android 导航组件 + 登录流程 + 嵌套 BottomNavigationView

Android Navigation Component + Login Flow + Nested BottomNavigationView

我正在努力使用 Android 导航组件构建导航,如下图所示。

我需要 "Login Flow",检查用户是否登录,然后导航到应用程序的主要部分(同时清除后台堆栈)。主要部分包含一个带有三个选项卡的 BottomNavigationView。但是如果我点击工具栏上的设置图标,我还想显示一个全屏的 SettingsFragment。

我需要两个带有独立导航图的 NavHostFragment 吗?如果是,我怎样才能将它们结合起来并获得适当的 backNavigation?

关于如何使用 android 导航组件实现这样的导航有什么想法吗?

您可以使用

navController.setGraph(R.navigation.xxxx)

里面有些navController.

首先你可以查看Conditional Navigation

其次,你可以只用一个 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