Android: Сокрытие клавиатуры в переопределенном “Сделанном” нажатии клавиши EditText

Я использовал немного кода Android для переопределения кнопки "Done" в моем поле EditText:

   myEditField.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_DONE) {

                mySubroutine();

                return true;
            }
            return false;
        }
    });

Активация поля звонит клавиатуре, и нажатие "Done" оценивает mySubroutine () успешно. Однако клавиатура больше не уходит, когда я нажимаю "Done". Как я восстанавливаю это поведение по умолчанию к стандартной программе?

12
задан Cœur 12 August 2017 в 05:46
поделиться

2 ответа

Почему бы и нет:

myEditField.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
        if (actionId == EditorInfo.IME_ACTION_DONE) { 

            mySubroutine(); 
        } 
        return false; 
    } 
}); 

Просто верните false после обработки кода. Это можно интерпретировать так, что независимо от того, что делает ваш код (mySubroutine ()), он все равно будет использовать действие по умолчанию впоследствии. Если вы возвращаете «true», вы говорите, что вы счастливый программист, и все, что нужно было сделать, произошло в вашей mySubroutine (), и действие по умолчанию не требует никаких действий.

48
ответ дан 2 December 2019 в 02:53
поделиться

Вы можете закрыть клавиатуру, выполнив:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindowToken(), 0);
13
ответ дан 2 December 2019 в 02:53
поделиться
Другие вопросы по тегам:

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