我正在 Android 机顶盒上编程,因此我还必须为交付的遥控器实现 onKey 事件。
我的问题是,我正在创建一个新的 PopupMenu,然后想通过某些 keyEvents 将其关闭。事实上,当用户按下(上/下)以外的其他键时,它应该总是关闭。目前它仅在按下后退按钮或项目时消失。当我在弹出菜单之外触摸时,它也会消失。但是我需要能够在点击 KeyEvent.KEYCODE_2 时关闭菜单。
主要问题是,我根本无法捕捉到任何 onKeyDown/Up 等事件!当弹出菜单显示时,它根本不会在我的 Activity 中捕获任何 KeyEvent。
在 Popupmenu/ContextMenu 模式下是否有可能捕获关键事件?
编辑:这是我在 MainActivity 中的 onKeyDown 捕获的示例:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.e("Key hit","true");
try {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
Log.e("Test"," catch left");
return true;
case KeyEvent.KEYCODE_0:
Log.e("Test","hit 0");
break;
case KeyEvent.KEYCODE_2:
Log.e("Test","hit 2");
break;
} catch (Exception e) {
Log.d("onKeyDown", "exception");
e.printStackTrace();
}
return false;
}