Android中的onKeyDown()不适用于虚拟键

时间:2014-07-03 06:01:21

标签: java android android-activity android-menu

我一直在搜索这件事,但无法理解。所以我想在这里问一下我面临的问题究竟是什么,这样它也可以帮助其他人(谁可能面临同样的问题)

我的活动

中有以下代码
public class MainActivity extends ActionBarActivity implements KeyEvent.Callback{
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        System.out.println("Key down called");
        if ( keyCode == KeyEvent.KEYCODE_MENU ) {
            System.out.println("Menu clicked");
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        System.out.println("On key up");
        if ( keyCode == KeyEvent.KEYCODE_MENU ) {

            System.out.println("up Menu clicked");
            return true;
        }
        return super.onKeyUp(keyCode, event);
    }
}

工作位置(具有物理按钮的设备)

如果我在Android设备中运行底部带有物理密钥的相同代码,则会调用Menu按钮和Back按钮调用这些方法。

问题(具有虚拟键的设备)

但是如果我在底部有Virtual keys的设备中运行代码(而不是物理键),则这些方法会被 NOT 调用。

我能够处理后退(感谢onBackPressed()),但无法覆盖按下虚拟键的菜单按钮。

这件事的任何解决方法?如何覆盖具有虚拟键的Android设备中的菜单按钮。

感谢。

1 个答案:

答案 0 :(得分:0)

较新版本中没有菜单按钮,尤其是底部有虚拟按钮。它是最近的应用程序按钮,具有此预定义功能,可显示最近的应用程序,但无法覆盖。