我正在努力用Android导航组件构建一个导航,如下图所示。
我需要一个“登录流程”,检查用户是否已登录,然后导航到应用程序的主要部分(还清除了后退堆栈)。主要部分包含一个带有三个选项卡的BottomNavigationView。但是,如果我单击工具栏上的设置图标,我也想显示全屏的SettingsFragment。
我是否需要两个带有单独导航图的NavHostFragments?如果可以,如何合并它们并获得适当的backNavigation?
有什么想法如何使用android导航组件实现这样的导航?
答案 0 :(得分:2)
首先您可以检查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
答案 1 :(得分:0)
我想知道为什么在各处都使用片段?片段很有用,但并非始终如此。 如果您对片段使用相同的容器,它将无法全屏打开。我认为,如果将“设置”页面声明为“活动”,则将解决您的问题。
如果将match_parent设置为容器的高度并设置BottomNavigationView可见性,则可以解决您的问题。注意:如果bottonNavView隐藏,则您的容器应与底部对齐
答案 2 :(得分:0)
您可以使用
navController.setGraph(R.navigation.xxxx)
在一些navController
内。