我想在用户按下菜单按钮时显示上下文菜单。我找到并使用了以下代码片段:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if((keyCode == KeyEvent.KEYCODE_MENU) && event.getRepeatCount() == 0)
{
ImageView v = (ImageView)findViewById(IMAGE_ID);
Log.v("me", "menu " + v.toString());
openContextMenu(v);
}
return true; // return false; doesn't work either
}
该视图当然是为上下文菜单注册的,并且通过长按可以正常工作。问题是上述代码只能不时工作。也就是说,当我按下菜单按钮时,总是会触发日志消息,但在极少数情况下会显示上下文菜单。显示正常的唯一情况是在应用程序启动之后。换句话说,只有第一次尝试是成功的,其他的都是偶尔工作的,但大部分都没有。视图不会更改并且始终可以找到,否则可能会在日志记录行中产生此类问题和异常。