У меня была та же проблема, и я не хотел полагаться на пользователя, нажимающего «Готово» или «Ввод».
Моей первой попыткой было использование прослушивателя onFocusChange, но оказалось, что мой EditText получил фокус по умолчанию. Когда пользователь нажимал какое-то другое представление, onFocusChange был запущен без назначения пользователем фокуса.
Следующее решение сделало это для меня, где onFocusChange прикреплен, если пользователь коснулся EditText:
final myEditText = new EditText(myContext); //make final to refer in onTouch
myEditText.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
myEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
// user is done editing
}
}
}
}
}
В моем случае, когда пользователь закончил редактирование, экран был перерисован, обновив объект myEditText. Если этот же объект сохраняется, вам, вероятно, следует удалить прослушиватель onFocusChange в onFocusChange, чтобы предотвратить проблему onFocusChange, описанную в начале этого поста.