有偏见的dispatchKeyEvent?

时间:2013-06-28 18:06:07

标签: android

我有这个代码监听ENTER和MULTIPLY并在按下它们时调用一个方法。问题是它只在按下enter时调用它,它不能用于乘法?我做错了什么?

 @Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
        if (event.getAction() == KeyEvent.ACTION_UP) {

            enter();

            return true;
        }




    }
    if (event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_MULTIPLY) {
        if (event.getAction() == KeyEvent.ACTION_UP) {

            enter();

            return true;
        }




    }
    return super.dispatchKeyEvent(event);
};

编辑:尝试使用KEYCODE_STAR仍然无法正常工作......它有什么问题?

1 个答案:

答案 0 :(得分:0)

使用以下onKeyDown(..)覆盖方法代替。即

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_ENTER) {
        enter();
        return true;
    }

    if (event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_MULTIPLY) {
        enter();
        return true;               
    }

    return super.onKeyDown(keyCode, event);
}

查看this SO Q&A thread以获取进一步说明