Android: KeyListener для EditText не получает ключи - PullRequest
7 голосов
/ 05 апреля 2011

У меня есть EditText, для которого я хочу отслеживать KeyEvents, и у меня есть слушатель, настроенный следующим образом:

mText = (EditText) this.findViewById(R.id.title);
mText.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        final int view = v.getId();
        switch (view) {
            case R.id.title:
                Log.d(LOG_TAG, "key handled");
                break;
        }
        return false;
    }
});

Моя проблема заключается в том, что когда EditText вводится с использованием виртуальной клавиатуры,единственное нажатие клавиши, которое запускает регистрацию, это клавиша возврата.Я убедился, что все другие нажатия клавиш даже не вызывают onKey().Я уверен, что это что-то простое, но не нашел ничего на SO, который, казалось бы, имел дело с этим.

Спасибо,

Пол

Ответы [ 3 ]

15 голосов
/ 05 апреля 2011

Попробуйте использовать addTextChangedListener(TextWatcher watcher), определенное здесь , с ним вы можете работать с физической и программной клавиатурой. Надеюсь, это поможет

5 голосов
/ 24 января 2013

Из справочника Android по адресу:

http://developer.android.com/reference/android/view/View.OnKeyListener.html

View.OnKeyListener

Обзор класса Определение интерфейса для обратного вызова, вызываемого при отправке события аппаратного ключак этому мнению.Обратный вызов будет вызван до того, как ключевое событие будет передано представлению.Это полезно только для аппаратных клавиатур; программный метод ввода не обязан запускать этот прослушиватель.

Кажется, OnKeyListener специально предназначен для реагирования только на аппаратные клавиши!

0 голосов
/ 26 апреля 2013

onKeyListener работает только с:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Установите его в методе onCreate.

...