Я использовал немного кода 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". Как я восстанавливаю это поведение по умолчанию к стандартной программе?
Почему бы и нет:
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 (), и действие по умолчанию не требует никаких действий.
Вы можете закрыть клавиатуру, выполнив:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindowToken(), 0);