显式上下文菜单调用在Android中不时有效

时间:2012-06-14 19:01:34

标签: android contextmenu

我想在用户按下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按钮时,日志消息总是被触发,但是在极少数情况下会出现上下文菜单。它显示正常的唯一情况是在应用程序启动之后。换句话说,只有第一次尝试是成功的,而所有其他人偶尔都会工作,但大部分都不是。视图不会更改并始终找到,否则可能会在日志记录行中产生此类问题和异常。

1 个答案:

答案 0 :(得分:0)

原来,onCreateContextMenu中存在一个错误,导致上下文菜单不时出现。实际上它并没有用菜单填充菜单,并且在Android的核心设计中跳过了一个空菜单。现在它按预期工作。