У меня возникла проблема с addTextChangedListener, который не полностью удалял текст в Firebase. Приведу пример, я получил свое имя от Firebase и setText() на myname. Итак, на myname editText показывает мое имя там. Когда я хотел отредактировать, я нажимаю editText, чтобы удалить слово с помощью backspace, но когда я слишком быстро возвращаюсь, текст в editText был полностью удален (на стороне клиента), и есть некоторые слова, которые не были удалены в Firebase (сервер боковая сторона).
Это означает, что удаляемое текстовое значение не соответствует и не соответствует действительности на стороне клиента и на стороне сервера. Обычный текст моего имени - Томми, поэтому я возвращаюсь назад, пока слово Томми не исчезнет, так что оно было очищено, но в Firebase он по-прежнему показывает первый символ «T» моего имени.
Но когда я очищал все слова в editText, я ввожу новое слово, например «Hello», Firebase сохранит Hello.
Код:
//delcare myname
private MultiAutoCompleteTextView myname;
myname.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (!myname.getText().toString().trim().isEmpty()){
DatabaseReference nameRef = FirebaseDatabase.getInstance().getReference()
.child(Config.URL_USER);
nameRef.child(uid).child("myName").setValue(userET.getText().toString());
parentActivity.updateHeaderUserName(myname.getText().toString());
}
}
});
Эти циклы работают до тех пор, пока в тексте редактирования не будет одного символа, чтобы добавить цикл else и внутри циклов else установить значение как null