Обнаружение возврата на пустой EditText - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь обнаружить возврат клавиатуры в пустом представлении EditText. Я искал переполнение стека, а также Google и ~ 20 похожих вопросов, но Ни у кого нет решения для обнаружения возврата в пустое EditText.

Все ответы развиваются вокруг этой статьи блога https://code.i -harness.com / ru / q / 4a914a который в конце отмечает, что это не обнаруживает возврат на пустой EditText вид.

Помощь очень ценится.

Ответы [ 3 ]

0 голосов
/ 02 сентября 2018

Есть несколько способов, с помощью которых вы можете обнаружить нажатие на клавишу возврата на EditText.

  1. Этот способ работает не на всех устройствах, но из этого поста вы можете сделать следующее, что устанавливает OnKeyListener для EditText:

    editText.setOnKeyListener(new OnKeyListener() {                 
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // You can identify which key was pressed by checking the keyCode value with KeyEvent.KEYCODE_
            if (keyCode == KeyEvent.KEYCODE_DEL) {  
                // Do something here
            }
            return false;       
        }
    });
    
  2. Или вы можете попробовать следующий метод, который определяет, был ли нажат backspace:

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_DEL:
                // Do something here
                return true;
            default:
                return super.onKeyUp(keyCode, event);
        }
    }
    
0 голосов
/ 02 сентября 2018

Наиболее надежное решение для обнаружения любого события или изменения текста в EditText использует TextWatcher , но если EditText уже пуст, вы не можете обнаружить клавишу возврата / удалить ключевое событие на всех устройствах .

Пожалуйста, имейте в виду, что это невозможно, и, надеюсь, вы или кто-либо другой не потратите впустую ваше время.

0 голосов
/ 02 сентября 2018

Вы можете определить, является ли текст редактирования пустым или нет, с помощью этого кода:

EditText usernameEditText = (EditText) findViewById(R.id.editUsername);
sUsername = usernameEditText.getText().toString();
if (sUsername.matches("")) {
Toast.makeText(this, "You did not enter a username", Toast.LENGTH_SHORT).show();
return;}
...