Задать вопрос
vanesxl
@vanesxl

Как отследить клавишу Backspace?

Здравствуйте, у меня есть поле EditText. В него можно вводить только целые числа. Мне нужно активировать кнопку если длина введенных данных больше 0 и соответственно блокировать если она ровна нулю.
Я Пытаюсь сделать так:
editNumberRace = (EditText)findViewById(R.id.editText2);

        View.OnKeyListener onKeyListener = new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                if(editNumberRace.toString().length()>0){
                    //делаем что то
                }
                else {
                    //делаем что то
                }
                return false;
            }
        };

        editNumberRace.setOnKeyListener(onKeyListener);

Все работает если вводить данные, но если символы удалять нажимая на клавишу Backspace, то почему то никакого события не происходит в принципе. Из этого получается что если этой клавишей удалить всю строку то моя кнопка не блокируется.
Как мне это реализовать?
Заранее большое спасибо!
  • Вопрос задан
  • 478 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Android-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл Android‑разработчик
    5 месяцев
    Далее
  • Академия Codeby
    Курс «Анализ защищенности приложений Андроид»
    14 недель
    Далее
Решения вопроса 1
Ewintory
@Ewintory
Java / Android developer
Отслеживать не нужно. Нужно просто использовать правильные инструменты. Для работы с EditText есть специльный TextWatcher.
editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // TODO Auto-generated method stub
            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub
            }
        });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы