首页 > 解决方案 > android addTextChangedListener 退格时未完全删除 Firebase 中的文本

问题描述

我遇到了 addTextChangedListener 的问题,它没有完全删除 Firebase 中的文本。我举个例子,我的名字来自 Firebase和setText(). myname所以在mynameeditText上已经显示了我的名字。当我想编辑时,我点击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());
            }

        }
    });

标签: androidfirebasefirebase-realtime-databaseaddtextchangedlistener

解决方案


这个循环一直有效,直到edittext中有一个字符,所以添加一个else循环并在else循环内将值设置为null


推荐阅读