#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) { } });
Комментариев нет:
Отправить комментарий