Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EditText中的文本删除因setSelection()而停止_Java_Android_Android Edittext - Fatal编程技术网

Java EditText中的文本删除因setSelection()而停止

Java EditText中的文本删除因setSelection()而停止,java,android,android-edittext,Java,Android,Android Edittext,我想用以下代码突出显示我的EditText中的一些单词: mEditText.addTextChangedListener(new TextWatcher() { private boolean ignoreChange = false; @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { }

我想用以下代码突出显示我的
EditText
中的一些单词:

mEditText.addTextChangedListener(new TextWatcher() {
        private boolean ignoreChange = false;
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }
        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            int cursorPosition = mEditText.getSelectionStart();
            if(!ignoreChange){
                //Highlight words
                ignoreChange = true;
                mEditText.setText(spannable);
                mEditText.setSelection(cursorPosition);
                ignoreChange = false;
            }
        }
        @Override
        public void afterTextChanged(Editable editable) {
        }
    });
因此,有两个问题:

-当我触摸键盘上的删除按钮时,它只删除一个字符,而不是删除所有字符,直到我触摸该按钮为止

-文本输入非常慢


我看到的这两个问题都是由于
setSelection(..)
引起的。我使用
setSelection(..)
是因为
setext(..)
将光标发送到
EditText
的开头,因此,问题的解决方案是从
onTextChanged(…)
方法转换为
posterextchanged(…)

通过这种方式,我们可以直接通过editable对象编辑
EditText
的文本,因此我们不需要调用
mEditText.setText(…)
mEditText.setSelection(…)

,这将再次触发文本更改事件