TextWatcher中的索引超出绑定异常

时间:2014-08-27 13:30:57

标签: android textwatcher

我正在使用TextWatcher在输入时更改EditText的文本。该字符串将新/替换的文本附加到旧文本然后显示它。我想只显示新的/替换的文本。我试图保留“上一个”文本的索引并仅显示已替换的新文本。我不确定这是否是正确的做法,可能是我完全以错误的方式做到这一点,这就是为什么它给了我一个索引超出限制的异常。有谁可以帮忙。例如,我键入a,下次当我键入b时,文本框中显示的文本是aab而不是ab,我想删除此冗余。下面是我的代码:如果一行的字符超过限制e-g 10,如何插入新行字符,10个字符后的字符应显示在下一行

tw = new TextWatcher()
{           
    public void beforeTextChanged(CharSequence s,int start,int count, int after){} 

    public void onTextChanged(CharSequence s, int start, int before, int count) 
    {                               
        txtData.removeTextChangedListener(tw);
        txtData.setText(s.toString().replace("\n", "*"))
        txtData.addTextChangedListener(tw);
    }
};
txtData.addTextChangedListener(tw);

1 个答案:

答案 0 :(得分:0)

我没有尝试过这段代码,因为我刚刚在一位短信发送者身上做了这件事。

这应该每10个符号添加一个换行符。我不完全确定它是否作为一个标志计数,你可能想检查一下。如果它确实计数,如果阻止你将不得不做一点复杂:)

tw = new TextWatcher()
{           
    public void beforeTextChanged(CharSequence s,int start,int count, int after){} 

    public void onTextChanged(CharSequence s, int start, int before, int count) 
    {
        if (s.toString().length()%10 == 0) {                               
            txtData.removeTextChangedListener(tw);
            txtData.setText(s.toString() + "\n");
            txtData.addTextChangedListener(tw);
        }
    }
};
txtData.addTextChangedListener(tw);