2015-05-06 2 views
0

Я хочу перехватить ключевые события с аппаратной клавиатуры. Например, когда пользователи нажимают «a», я не хочу, чтобы это было написано в EditText. Поэтому я возвращаю true, когда клавиша «a» нажата и отпущена, но все равно написана в EditText. Что не так?Android: Intercept onKeyDown() и onKeyUp()

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    switch (keyCode) { 
     case KeyEvent.KEYCODE_A: 
      //Here it logs correct, but the letter appears in the EditText anyway 
      Log.d("Textboard","A"); 
      return true; 

     default: 
      return super.onKeyDown(keyCode, event); 
    } 
} 

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    switch (keyCode) { 
     case KeyEvent.KEYCODE_A: 
      //Here it logs correct, but the letter appears in the EditText anyway 
      Log.d("Textboard","A"); 
      return true; 

     default: 
      return super.onKeyUp(keyCode, event); 
    } 
} 

ответ

0

onKeyXXX() действия вызывается позже, чем onKeyXXX() EditText.

Если вы хотите перехватить его, просто переопределите dispatchKeyEvent().

Смежные вопросы