Android -请将 onKeyDown 不会使用 KEYCODE_MENU

发布时间: 2016/6/26 12:26:10
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

使用 onKeyDownKEYCODE_MENU 做什么但它工作KEYCODE_SEARCH

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch(keyCode){
        case KeyEvent.KEYCODE_MENU:
            Toast.makeText(this, "Menu key pressed", Toast.LENGTH_SHORT).show();
            return false;
        case KeyEvent.KEYCODE_SEARCH:
            Toast.makeText(this, "Search key pressed", Toast.LENGTH_SHORT).show();
            return false;
    }
    return super.onKeyDown(keyCode, event);
}

我觉得还有一件处理 menu 密钥,所以它不会听我的代码我有试着 disbling onCreateOptionsMenu 像这样 ︰

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    return true;
}

但仍然无法工作。
所以,任何的想法,使 menu buttononKeyDown ??

解决方法 1:

这可能是 appcompat v22 中的 bug。 请参阅https://code.google.com/p/android/issues/detail?id=159795

张贴在这线程是重写 dispatchKeyEvent 的解决方法 ︰

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        int keyCode = event.getKeyCode();
        int action = event.getAction();
        boolean isDown = action == 0;

        if (keyCode == KeyEvent.KEYCODE_MENU) {
            return isDown ? this.onKeyDown(keyCode, event) : this.onKeyUp(keyCode, event);
        }

        return super.dispatchKeyEvent(event);
    }

编辑 ︰请参阅升级到 AppCompat v22.1.0 和现在 onKeyDown onKeyUp 并不触发时 menu 按下键

官方微信
官方QQ群
31647020