我遇到的问题是addTextChangedListener没有完全删除Firebase中的文本。我举了一个例子,我从Firebase获得了我的名字,setText()
上的myname
。所以在myname
上,editText在那里显示了我的名字。当我想编辑时,我点击editText,所以我可以通过退格删除单词,但是当我退格太快时,editText中的文本被完全删除(客户端)并且在Firebase上有一些单词没有删除(服务器侧)。
这意味着删除文本值与客户端和服务器端不一致且准确。我的名字的普通文本是Tommy,所以我退格直到Tommy一词消失,所以它被清除了但是在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());
}
}
});
答案 0 :(得分:0)
这个循环有效,直到edittext中有一个字符,所以添加一个else循环并在else循环中将值设置为null