Display.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_ENTER:
solveExpression();
return true;
}
return false;
}
});
我正在尝试通过按下键盘上的enter按钮解决Display(EditText)中包含的表达式,但它总是将其解释为我按下按钮两次。有谁知道为什么会这样?
答案 0 :(得分:4)
...试
Display.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_ENTER:
// Check for ACTION_DOWN only...
if (KeyEvent.ACTION_DOWN == event.getAction()) {
solveExpression();
return true;
}
}
}
});
“操作”可以是ACTION_DOWN
,ACTION_UP
或ACTION_MULTIPLE
(最后一个用于按住键时)。将为任何/所有这些行动调用onKey()。
正如另一个回答所提到的那样,它会触发两次,因为它曾经一次性下降而一次性上升。
答案 1 :(得分:2)
if (event.getAction()!=KeyEvent.ACTION_DOWN) // we catch only key down events
return true;
因此,您停止将其他关键事件视为onClick。
如果你想让其他人无法进一步获取其他工作的事件,你应该设置
return false;
答案 2 :(得分:0)
不是一个机器人,但它注册两次的事实让我觉得OnKey包含onKeyDown和onKeyUp。听onKeyUp也会为你工作吗?