我想知道为什么onKey事件在我记录时是双重处理。这是我的编码。
ed1.setOnKeyListener(new View.OnKeyListener()
{
Integer count = 0;
String typeWord = "";
public boolean onKey(View v, int keyCode, KeyEvent event)
{
count++;
char c = (char)event.getUnicodeChar();
typeWord = typeWord + c;
Log.v ("keypress", "Keycode " + typeWord + " - skeyCode " + count);
return false;
}
});
这是我输入“a”时的记录。
10-16 02:38:27.025: VERBOSE/keypress(362): Keycode a - skeyCode 5
10-16 02:38:27.315: VERBOSE/keypress(362): Keycode aa - skeyCode 6
答案 0 :(得分:4)
这是因为它检测到key_down和key_release事件,所以它会两次触发相同的代码。
您必须在key_down或key_release上选择处理代码的位置
if (KeyEvent.ACTION_DOWN == event.getAction()) {
// code to be executed on key press.
}