首页 > 解决方案 > 当我们退格删除最后一个字符时,TextWatcher 覆盖未调用。我怎么知道最后一个字符是否被删除?

问题描述

我正在尝试保存在 EditText 上键入的内容。当用户键入一些文本时,文本观察器工作正常。当用户删除文本时,文本观察器工作正常,直到用户删除最后一个字符。

    answerEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

        @Override
        public void afterTextChanged(Editable editable) {
            saveAnswer(editable.toString())
        }
    });

当最后一个字符被删除时,saveAnswer 期望得到的是一个空字符串。但实际结果是没有触发。

标签: javaandroid

解决方案


使用 TextWatcher 和 onTextChange 方法来跟踪用户输入,当用户第一次在 watcher 中写东西时,然后自己存储文本并自己检查差异。因为每次用户更改字符时都会触发 onTextChanged。

String userInputText=userText.getString().toString();

    @Override 
    onTextChanged(CharSequence s, int start, int before, int count){
        compareText(s, userInputText); //compare and do whatever you need to do
        previousText = s;
    }

推荐阅读