Android: перехват onKeyDown() и onKeyUp()

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

@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);
    }
}

person Kewitschka    schedule 06.05.2015    source источник


Ответы (1)


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

Если вы хотите его перехватить, просто переопределите диспетчеризацияKeyEvent().

person Jared Tsai    schedule 20.05.2015