MenuHost菜单项点击无响应:onMenuItemSelected未触发求助
问题排查与解决
核心原因:Toolbar未正确关联为Activity的ActionBar
你的代码中,Activity虽配置了Toolbar,但如果setAppBar方法内部未调用setSupportActionBar(toolbar),Toolbar仅作为普通View存在,无法与MenuHost的菜单系统绑定,导致点击事件无法传递到onMenuItemSelected方法。
具体修复步骤
将Toolbar关联为SupportActionBar
修改Activity的onCreate方法,在调用setAppBar后(或直接在setAppBar方法内部)添加如下代码:setSupportActionBar(toolbar)若
setAppBar是自定义封装方法,检查其内部是否包含该逻辑,无则补充。验证菜单布局无拦截属性
确认R.menu.electricity_tar_link中的skipMI菜单项未设置android:onClick属性(该属性会直接拦截点击事件,导致MenuProvider无法接收),示例正确布局如下:<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/skipMI" android:title="跳过" app:showAsAction="ifRoom"/> </menu>确认Activity未拦截菜单事件
若InjectionFragmentActivity继承自AppCompatActivity,确保未重写onOptionsItemSelected并直接返回true(会阻断事件向下传递),若有重写需保留super.onOptionsItemSelected(item)调用。
完成上述修改后,重新运行应用即可触发onMenuItemSelected方法并输出日志。
内容的提问来源于stack exchange,提问作者BRDroid
相关产品推荐
相关产品推荐

