【问题标题】:AndroidX JetPack NavigationUI - Overriding Action on Non-Navigation Item In DrawerAndroidX JetPack NavigationUI - 覆盖抽屉中非导航项的操作
【发布时间】:2019-04-17 02:42:44
【问题描述】:

我刚开始使用 Android NavigationUI 通过抽屉式菜单实现 Fragment Navigation。虽然它确实感觉有点像魔术,但我有一个主要问题。也就是说,我在菜单中有一个logout 项目,它不应该导航到任何片段,而是导航到“操作”。虽然我在这里找到了类似的问题,例如this one,但我还没有找到我的问题的明确答案。以下是我目前用来设置导航的功能:

private fun setupNav() {
    val binding: ActivityMainMenuBinding = DataBindingUtil.setContentView(this,
            R.layout.activity_main_menu)
    drawerLayout = binding.drawerLayout
    navController = Navigation.findNavController(this, R.id.content_frame)
    appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayout)

    // Set up ActionBar
    setSupportActionBar(binding.toolbar)
    setupActionBarWithNavController(navController, appBarConfiguration)
    binding.navView.setupWithNavController(navController)
}

如果您对我如何解决此问题有任何建议,如果您能分享这些建议,我们将不胜感激。

【问题讨论】:

    标签: android kotlin navigation-drawer android-jetpack androidx


    【解决方案1】:

    你只需要添加下面提到的代码

        nav_view.menu.findItem(R.id.nav_logout).setOnMenuItemClickListener {
                Log.e("=>"," You clicked on logout !!! ")
                true
            }
    

    这是我的完整代码

        class NavigationDrawerActivity : AppCompatActivity() {
    
        private lateinit var appBarConfig: AppBarConfiguration
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_navigation_drawer)
            setSupportActionBar(toolbar)
    
            val navController: NavController = findNavController(R.id.nav_host_fragment)
    
            appBarConfig = AppBarConfiguration(
                setOf(
                    R.id.nav_home,
                    R.id.nav_gallery,
                    R.id.nav_slideshow,
                    R.id.nav_tools,
                    R.id.nav_share,
                    R.id.nav_send
                )
                , drawer_layout
            )
    
            setupActionBarWithNavController(navController, appBarConfig)
            nav_view.setupWithNavController(navController)
    
            //For log out button related stuff
            nav_view.menu.findItem(R.id.nav_logout).setOnMenuItemClickListener {
                Log.e("=>"," You clicked on logout !!! ")
                true
            }
        }
    
        override fun onSupportNavigateUp(): Boolean {
            return findNavController(R.id.nav_host_fragment).navigateUp(appBarConfig)
                    || super.onSupportNavigateUp()
        }
    }
    

    你也可以通过这个this linkGit Hub@我的项目this link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多