android - android addTextChangedListener 退格时未完全删除 Firebase 中的文本
问题描述
我遇到了 addTextChangedListener 的问题,它没有完全删除 Firebase 中的文本。我举个例子,我的名字来自 Firebase和setText()
. myname
所以在myname
editText上已经显示了我的名字。当我想编辑时,我点击editText,所以我可以通过退格删除单词,但是当我退格太快时,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());
}
}
});
解决方案
这个循环一直有效,直到edittext中有一个字符,所以添加一个else循环并在else循环内将值设置为null
推荐阅读
- maven - 通过 Gitlab CI/CD 管道将工件上传到 Nexus 存储库时连接超时
- reactjs - SyntaxError:无法在模块外部使用导入语句进行反应
- go - 仅使用标准库,如何将错误包装在自定义错误中?
- javascript - Ajax 不调用 php 脚本
- node.js - NodeJS 和 iso-8859-8 编码
- sql - SQL 离职者查询
- html - CSS选择器:如何在div中选择不是直接父级的按钮
- python - 找不到满足 DoubleTable 要求的版本(来自版本:无)
- node.js - 需要有关 Azure 功能 oauth2 身份验证的建议
- go - 是否可以将结构的切片作为接口传递给方法?