Android: KeyListener для EditText, не получающего ключи


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

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 с помощью виртуальной клавиатуры единственным нажатием клавиши, запускающим запись, является клавиша backspace. Я проверил, что все другие нажатия клавиш даже не вызывают onKey(). Я уверен, что это что-то простое, но не нашел ничего такого, что, казалось бы, имеет отношение к этому.

Спасибо,

Павел

3 7

3 ответа:

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

Из ссылки на Android по адресу:

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

Вид.OnKeyListener

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

Похоже, OnKeyListener специально разработан, чтобы реагировать только на аппаратные ключи!

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

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Задайте его в методе onCreate.