当addspace时,android addTextChangedListener没有完全删除Firebase中的文本

时间:2018-05-28 09:37:45

标签: android firebase firebase-realtime-database addtextchangedlistener

我遇到的问题是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());
            }

        }
    });

1 个答案:

答案 0 :(得分:0)

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