我试图为我的菜单项设置一个自定义监听器,但是无论我在哪里尝试这样做,我都会通过id搜索任何菜单项获得null。它在主要活动中使用方法onOptionItemSelected()
可以正常工作,但这很难看。我试图在onCreateOptionsMenu()
,onPrepareOptionsMenu()
甚至在onCreate()
中设置听众但是他们都让我失望了 - 哪个方法是为menuItems设置监听器的正确方法?
答案 0 :(得分:0)
在充气时,您需要对您的菜单进行参考,它们的菜单项不属于普通视图层次结构。
然后,您可以轻松地从保存的菜单参考中获取菜单项ID,我之前使用过此方法并且它可以正常工作,但它不像使用标准菜单监听器那样干净。
答案 1 :(得分:0)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == R.id.xxx ) {
// logic
}
return true;
}