onKeyDown не срабатывает при нажатии стрелки влево, вправо, вверх, вниз в Android

Обратный вызов OnKeyDown в InputMethodService работает для многих кнопок аппаратной клавиатуры, но не срабатывает со стрелками влево, вправо, вверх, вниз. Как я могу справиться с этим?

Спасибо за внимание!


person EastBK    schedule 24.11.2013    source источник
comment
вы можете увидеть логарифм и отобразить ошибку, которую вы получаете....   -  person vinay Maneti    schedule 24.11.2013
comment
Нет ошибки. Я предполагаю, что Android не поддерживает событие срабатывания для таких кнопок клавиатуры.   -  person EastBK    schedule 24.11.2013


Ответы (1)


Вы смотрели документацию для разработчиков по обработке ключевых событий? Вы могли бы попробуйте onKeyDown или onKeyUp, чтобы получить только одно событие, и распечатайте keyCode, чтобы увидеть, что получено:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
  Log.i("your tag", "Keycode: " + keyCode);
  switch (keyCode) {
    case KeyEvent.KEYCODE_DPAD_LEFT:
        leftKeyClick();
        return true;
    case KeyEvent.KEYCODE_DPAD_RIGHT:
        rightKeyClick();
        return true;
    case KeyEvent.KEYCODE_DPAD_UP:
        upKeyClick();
        return true;
    case KeyEvent.KEYCODE_DPAD_DOWN:
        downKeyClick();
        return true;
    default:
        return super.onKeyUp(keyCode, event);
  }
}

Дополнительные сведения см. в справочнике по объекту KeyEvent. Если вы по-прежнему не обнаруживаете клавиши со стрелками, вам может потребоваться переопределить метод onKeyDown или onKeyUp вашего представления, этот похожий вопрос может быть полезен.

person brendan    schedule 24.11.2013