首页 > 解决方案 > 导航架构组件 - 导航抽屉

问题描述

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

  1. 我为菜单中的每个导航项添加了片段。
  2. 添加 NavHostFragment 将交换此 Fragment 的位置
  3. 然后添加片段作为目的地
  4. 我想要主详细导航,即开始目的地 -> 片段 2 后退按钮 -> 开始目的地开始目的地 -> 片段 2 -> 片段 3 -> 片段 4 后退按钮 -> 开始目的地

  5. 我的问题是我是否应该在该图中添加任何连接?

  6. 我还需要一个菜单​​项,它只是注销函数调用而不是片段交换,所以我无法使用默认设置对其进行配置

    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. 模态登录活动导航呢?

标签: androidnavigationnavigation-drawerandroid-architecture-components

解决方案


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

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

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

我希望它对你有帮助。


推荐阅读