我想在用户按下Menu按钮时显示上下文菜单。我找到并使用了以下代码片段:
@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
}
当然,视图是为上下文菜单注册的,并且通过长时间触摸可以正常工作。问题是上述代码只是不时起作用。也就是说,当我按下Menu按钮时,日志消息总是被触发,但是在极少数情况下会出现上下文菜单。它显示正常的唯一情况是在应用程序启动之后。换句话说,只有第一次尝试是成功的,而所有其他人偶尔都会工作,但大部分都不是。视图不会更改并始终找到,否则可能会在日志记录行中产生此类问题和异常。
答案 0 :(得分:0)
原来,onCreateContextMenu
中存在一个错误,导致上下文菜单不时出现。实际上它并没有用菜单填充菜单,并且在Android的核心设计中跳过了一个空菜单。现在它按预期工作。