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 ответа:
Попробуйте использовать
addTextChangedListener(TextWatcher watcher)
определенныйздесь с его помощью вы можете обрабатывать физическую и программную клавиатуру. Я надеюсь, что это поможет
Из ссылки на Android по адресу:
Http://developer.android.com/reference/android/view/View.OnKeyListener.html
Вид.OnKeyListener
Обзор Класса Определение интерфейса для обратного вызова, вызываемого при отправке события аппаратного ключа в это представление. Обратный вызов будет вызван до того, как ключевое событие будет передано в представление. Это полезно только для аппаратных клавиатур; программный метод ввода не обязан инициировать это слушатель.
Похоже, OnKeyListener специально разработан, чтобы реагировать только на аппаратные ключи!