为什么onKey()调用两次?
问题描述:
我使用这个代码:为什么onKey()调用两次?
public boolean onKey(View v, int keyCode, KeyEvent event) {
msg = (EditText)findViewById(R.id.msg);
String message = msg.getText().toString();
if(keyCode == 66)
{
//It's hitting here twice.
}
return false;
};
谁能告诉我为什么它击中两次,当我按下ENTER?
答
安其被激发两次:第一次按下按键,并为关键了第二次,所以你必须过滤:
YOUR_VIEW.setOnKeyListener(new OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//This is the filter
if (event.getAction()!=KeyEvent.ACTION_DOWN)
return true;
switch (keyCode) {
case KeyEvent.KEYCODE_1 :
MakeToast(1);
break;
case KeyEvent.KEYCODE_2 :
MakeToast(2);
break;
case KeyEvent.KEYCODE_3 :
MakeToast(3);
break;
}
return true;
}
});
一旦下来,一旦上涨?试试onKeyDown()或onKeyUp(),或者检查KeyEvent.getAction()。 – benvd 2010-09-27 10:22:25