使用android遥控器关闭弹出菜单

使用android遥控器关闭弹出菜单,android,contextmenu,dismiss,onkeydown,popupmenu,Android,Contextmenu,Dismiss,Onkeydown,Popupmenu,我在安卓机顶盒上编程,所以我还必须为交付的遥控器实现onKey事件 我的问题是,我正在创建一个新的弹出菜单,然后想通过某些keyEvents来取消它。事实上,当用户按除(向上/向下)以外的其他键时,它应该始终关闭。 目前,它仅在按下后退按钮或某个项目时消失。当我在弹出菜单外触摸时,它也会消失。但是,我需要能够在按下键时关闭菜单,例如KeyEvent.KEYCODE_2 主要的问题是,我根本无法捕捉任何onKeyDown/Up等事件!! 当弹出菜单显示时,它不会捕获我的活动中的任何KeyEvent

我在安卓机顶盒上编程,所以我还必须为交付的遥控器实现onKey事件

我的问题是,我正在创建一个新的弹出菜单,然后想通过某些keyEvents来取消它。事实上,当用户按除(向上/向下)以外的其他键时,它应该始终关闭。 目前,它仅在按下后退按钮或某个项目时消失。当我在弹出菜单外触摸时,它也会消失。但是,我需要能够在按下键时关闭菜单,例如KeyEvent.KEYCODE_2

主要的问题是,我根本无法捕捉任何onKeyDown/Up等事件!! 当弹出菜单显示时,它不会捕获我的活动中的任何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;
}

发布您用来捕获关键事件的代码。请参阅我的编辑。我真的没有做什么特别的事情,好像在弹出菜单显示时很难处理按键事件。你有没有想过如何避免弹出菜单阻止所有按键输入?