导航体系结构组件-导航抽屉

时间:2018-07-14 08:23:13

标签: android navigation navigation-drawer android-architecture-components

我正在将导航组件与导航抽屉一起使用。

  1. 我为菜单中的每个导航项添加了片段。
  2. 添加NavHostFragment,该片段将在其中交换
  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.模态登录活动导航如何?

2 个答案:

答案 0 :(得分:0)

Michael,导航架构一开始并不容易理解,您想要的也不例外,我也不了解您想要什么。但是,由于这种导航是新的,所以我建议您遵循代码实验室。

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

例如,我看到您要关闭抽屉的生产线。代码实验室提供有关如何设置带有导航功能的导航抽屉的说明。

我希望它能对您有所帮助。

答案 1 :(得分:0)

我想从您的问题中了解到的部分是如何导航到注销。

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

因此,您需要将启动活动添加到nav_graph。