为什么在Android中使用onKey事件进行双重处理?

时间:2011-10-15 11:39:51

标签: android

我想知道为什么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

1 个答案:

答案 0 :(得分:4)

这是因为它检测到key_down和key_release事件,所以它会两次触发相同的代码。

您必须在key_down或key_release上选择处理代码的位置

if (KeyEvent.ACTION_DOWN == event.getAction()) {
    // code to be executed on key press.
}