android - 导航架构组件 - 导航抽屉
问题描述
我正在使用带有导航抽屉的导航组件。
- 我为菜单中的每个导航项添加了片段。
- 添加 NavHostFragment 将交换此 Fragment 的位置
- 然后添加片段作为目的地
我想要主详细导航,即开始目的地 -> 片段 2 后退按钮 -> 开始目的地开始目的地 -> 片段 2 -> 片段 3 -> 片段 4 后退按钮 -> 开始目的地
我的问题是我是否应该在该图中添加任何连接?
我还需要一个菜单项,它只是注销函数调用而不是片段交换,所以我无法使用默认设置对其进行配置
val navController = findNavController(R.id.main_nav_host_fragment) nav_view.setupWithNavController(navController)
而是不得不使用
nav_view.setNavigationItemSelectedListener(this)
override fun onNavigationItemSelected(item: MenuItem): Boolean {
// Handle navigation view item clicks here.
when (item.itemId) {
R.id.navSignOut -> {
loginViewModel.logout()
}
else -> {
val navController = findNavController(R.id.main_nav_host_fragment)
navController.navigate(item.itemId)
}
}
drawer_layout.closeDrawer(GravityCompat.END)
return true
}
我还需要在带有导航抽屉的主应用程序活动上方(模态)显示登录活动。我可以使用导航图吗?如何使用?登录活动应该:在后退按钮上 -> 关闭应用程序,如果已注销 -> 从主要活动开始,如果已登录,则转到主要活动
所以我必须提出问题: 1. 我应该使用任何动作吗?2. 我应该为抽屉或 setupWithNavController() 使用自定义导航吗?3. 模态登录活动导航呢?
解决方案
Michael,导航架构一开始并不那么容易理解,你想要的也不例外。但由于这个导航是新的,我只是建议你关注代码实验室。
https://codelabs.developers.google.com/codelabs/android-navigation/#0
例如,我看到您关闭抽屉的线路。代码实验室有关于如何使用导航和 UI 设置导航抽屉的说明
我希望它对你有帮助。
推荐阅读
- hive - 在 HIVE 中排序观察
- html - 我如何缩小这个盒子的大小,以便让它们彼此对齐?
- python - 在 Beautiful Soup Python 中用文本打印类名
- android - 匕首刀柄在数据绑定之前注入
- emulation - 在visual studio中运行一个实时更新的模拟器,我似乎无法让我的运行
- google-cloud-platform - GKE VPN 到本地数据库
- string - 如何转换列表
- sql - 在给定值后基于特定值的存在进行选择
- c# - ASP.Net Core 3.1 - 从控制器向部分视图模态传递值?
- blazor - Blazor 全局异常处理重复