Android导航抽屉菜单点击无响应,需通过Intent跳转不同Activity
解决导航抽屉菜单项点击无响应的问题
我仔细看了你的代码,立刻发现了问题所在:你实现了NavigationView.OnNavigationItemSelectedListener接口,但在onNavigationItemSelected方法里只处理了两个菜单项,剩下的3个完全没有添加跳转逻辑,这就是点击没反应的核心原因!
修复步骤:
1. 补全所有菜单项的跳转逻辑
把你已经写好的跳转逻辑整合到onNavigationItemSelected方法中,确保每个菜单项的id都被匹配到。修改后的方法如下:
@Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { int id = item.getItemId(); if (id == R.id.para) { Intent i = new Intent(menu.this, settingmenu.class); startActivity(i); } else if (id == R.id.prof) { Toast.makeText(this, "clicked", Toast.LENGTH_SHORT).show(); } else if (id == R.id.tache_menu) { // 替换成你菜单布局中实际的菜单项id Intent ii = new Intent(menu.this, partietache.class); startActivity(ii); } else if (id == R.id.rendez_menu) { // 替换成你菜单布局中实际的菜单项id Intent intent = new Intent(menu.this, partierendezvous.class); startActivity(intent); } else if (id == R.id.evenement_menu) { // 替换成你菜单布局中实际的菜单项id Intent intent = new Intent(menu.this, partieevenement.class); startActivity(intent); } else if (id == R.id.projet_menu) { // 替换成你菜单布局中实际的菜单项id Intent intent = new Intent(menu.this, partieprojet.class); startActivity(intent); } mdrawer.closeDrawer(GravityCompat.START); return true; }
重要提醒:请把上面代码里的
R.id.tache_menu这类占位id,替换成你menu布局文件中实际定义的菜单项id,必须和布局里的id完全一致!
2. 确保所有目标Activity在Manifest中注册
这是很容易忽略的关键步骤,如果你的partietache、partierendezvous等Activity没有在AndroidManifest.xml里声明,跳转不仅会失败,甚至可能导致崩溃。请检查Manifest里是否有类似这样的注册代码:
<activity android:name=".partietache"/> <activity android:name=".partierendezvous"/> <activity android:name=".partieevenement"/> <activity android:name=".partieprojet"/> <activity android:name=".settingmenu"/>
3. 清理冗余代码
你之前写的runThis、Rendezvous等独立方法,如果没有在布局中通过android:onClick绑定的话,现在可以删掉了,避免代码冗余。
为什么之前的方法没用?
因为你把跳转逻辑写在了独立的方法里,但这些方法并没有和导航抽屉的菜单项绑定——导航抽屉的点击事件只会触发onNavigationItemSelected方法,所以那些独立的方法根本不会被调用。
内容的提问来源于stack exchange,提问作者Firas Kahia
相关产品推荐
相关产品推荐

