【问题标题】:biased dispatchKeyEvent?有偏见的 dispatchKeyEvent?
【发布时间】:2013-06-28 18:06:07
【问题描述】:

我有这段代码监听 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 仍然不起作用..它有问题吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    改用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了解更多说明

    【讨论】:

    • 您是否删除/注释掉了 dispatchKeyEvent(..) ?如果不是,请这样做然后测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2021-11-18
    • 2017-11-11
    • 1970-01-01
    相关资源
    最近更新 更多