You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Drawer Navigation菜单点击无响应,如何解决?

解决Drawer Navigation菜单项无点击事件的问题

你的代码存在几个关键问题,导致抽屉菜单点击无响应:

  • 重复调用setContentView,造成视图初始化混乱
  • 没有给NavigationView绑定OnNavigationItemSelectedListener监听器
  • 错误地用onCreateOptionsMenu处理抽屉菜单(这个方法是给ActionBar菜单用的,和抽屉里的NavigationView无关)
  • onNavigationItemSelected返回false,无法触发抽屉关闭逻辑

修复步骤

  1. 移除重复的setContentView(R.layout.layout_test),只保留ViewBinding的初始化逻辑
  2. 在onCreate中给binding.navView设置选中监听器
  3. 删除多余的onCreateOptionsMenu方法
  4. 修改onNavigationItemSelected的返回值为true,点击菜单后自动关闭抽屉

修改后的test.kt代码

class test : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {

    private lateinit var binding: LayoutTestBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 移除重复的setContentView调用
        binding = LayoutTestBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.menu.setOnClickListener {
            binding.drawerLayout.openDrawer(GravityCompat.END)
        }

        // 给NavigationView设置监听器
        binding.navView.setNavigationItemSelectedListener(this)
    }

    override fun onNavigationItemSelected(item: MenuItem): Boolean {
        when(item.itemId){
            R.id.logout_menu -> {
                Toast.makeText(this@test,"logout", Toast.LENGTH_SHORT).show()
            }
            R.id.menu2 -> {
                Toast.makeText(this@test,"dddddd", Toast.LENGTH_SHORT).show()
            }
            R.id.menu1 -> {
                Toast.makeText(this@test,"?????", Toast.LENGTH_SHORT).show()
            }
        }
        // 关闭抽屉并返回true,表示事件已处理
        binding.drawerLayout.closeDrawer(GravityCompat.END)
        return true
    }
}

内容的提问来源于stack exchange,提问作者jyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:55:22