导航架构组件 - 导航抽屉

Posted

技术标签:

【中文标题】导航架构组件 - 导航抽屉【英文标题】:Navigation Architecture Component - Navigation Drawer 【发布时间】:2018-12-22 12:24:36 【问题描述】:

我正在使用带有导航抽屉的导航组件。

    我为菜单中的每个导航项添加了片段。 在此 Fragment 将被交换的位置添加 NavHostFragment 然后添加片段作为目的地

    我想要主细节导航,即 开始目的地 -> 片段 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. 模态登录活动导航呢?

【问题讨论】:

我也面临同样的问题。寻找答案!! 【参考方案1】:

我从您的问题中解脱出来的部分是如何导航到注销。

通常当用户单击注销时,您希望将其注销并导航到启动屏幕。

所以你需要将你的启动活动添加到 nav_graph。

【讨论】:

【参考方案2】:

Michael,导航架构一开始并不那么容易理解,你想要的也不例外。但由于这个导航是新的,我只是建议你关注代码实验室。

https://codelabs.developers.google.com/codelabs/android-navigation/#0

我看到例如你关闭抽屉的线路。代码实验室有关于如何使用导航和 UI 设置导航抽屉的说明

希望对你有帮助。

【讨论】:

如何使用 Navigation Controller 组合 Navigation Drawer 和选项卡? 你不能,你也不应该。选项卡并不意味着修改导航,它在“选项卡组织不同屏幕、数据集和其他交互的内容”指南中说明,“选项卡组织并允许在相关且处于同一级别的内容组之间进行导航等级制度。” (material.io/components/tabs/#) 这就是为什么你在任何地方都找不到方法。虽然有一个底部导航组件可以与 Navigation Arch 一起使用 如果我把底部导航和抽屉结合起来可以吗? 是的,但最好使用其中一个。我建议您阅读指南以了解哪些内容更适合您的应用。

以上是关于导航架构组件 - 导航抽屉的主要内容,如果未能解决你的问题,请参考以下文章

如何在新的导航抽屉架构组件中实现共享应用或评分应用或注销功能

Android 导航架构组件 - 导航架构组件是不是意味着仅使用单个活动?

导航抽屉不适用于导航组件

导航架构组件 - 新资源对话框没有导航图的导航资源类型

在 FAB 单击时导航到片段(导航架构组件)

导航架构组件 - 对话框片段