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
我正在努力使用 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