#java #android #клавиатура #listener #обработка
Находил несколько примеров по этому поводу, где то со switch где то c if, но суть
не в этом, так и так не работает. Обработчик реагирует только на нажатия цифр. Даже
default в switch`e не реагирует. Что я делаю не так? Вот код
edit.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (KeyEvent.ACTION_DOWN == event.getAction()){
switch (keyCode){
case KeyEvent.KEYCODE_ENTER:
Log.e("TAG", "Нажат интер");
break;
case KeyEvent.KEYCODE_2:
Log.e("TAG", "Нажато 2");
break;
case KeyEvent.KEYCODE_E:
Log.e("TAG", "Нажато e");
break;
default: Log.e("TAG", "Нажато что то");
}
}
return false;
}
});
Весь обработчик реагирует только на цифры. Нажимаю буквы или какие нибудь другие
символы default не срабатывает, нажимаю цифры кроме 2 - срабатывает. Нажимаю 2 - работает.
Все клавиши перетыкал "Нажато е" не выходит. И интер тоже. Может дело в модели телефона
не знаю, у меня Lenovo S650 Андроид 4.4.2 Api 19. Другого телефона нет для проверки.
Ответы
Ответ 1
OnKeyListener работает криво и в основном только как раз для цифр с кейпада, остальные клавиши не воспринимает. Странно при этом, что ентер тоже не работает. В этом случае лучше использовать TextWatcher, как-то так: myTextView.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.subSequence(count-1,count).equals("нужная кнопка")) ...выполнить нужное действие } @Override public void afterTextChanged(Editable s) { } });
Комментариев нет:
Отправить комментарий