setText用于在addTextChangedListener中导致崩溃的edittext

时间:2010-09-24 14:00:31

标签: android android-edittext

我试图从一个Android应用程序制作中的edittext文本框中删除所有非标准字母字符。我正在成功创建一个监听器,获取值并通过正则表达式删除坏的chrs。但是,下面的.setText行导致应用程序崩溃。任何人都有任何想法如何绕过这个并动态掩盖某些chrs?

filenameTextBox.addTextChangedListener(new TextWatcher() { 

    public void onTextChanged(CharSequence s, int start, int before, int count) {

        FILENAME=s.toString();
        FILENAME = FILENAME.replaceAll("[^a-zA-Z]", "");
        filenameTextBox.setText(FILENAME);
   }
}

3 个答案:

答案 0 :(得分:6)

希望如果我清楚地了解您的问题,此片段会对您有所帮助

        public void afterTextChanged(Editable editable)
        {
            if (editable.length() != 0)
            {
                chatTextArea.removeTextChangedListener(this);
                chatTextArea.setText("your text");
                chatTextArea.addTextChangedListener(this);
            }
        }

答案 1 :(得分:0)

你不是在创造一个无限循环吗?您可以在每次调用处理程序时进行记录,并查看它被调用的次数。

答案 2 :(得分:0)

public void onTextChanged(CharSequence s, int start, int before, int count)
    {
        chatTextArea.removeTextChangedListener(this);
        String s_new = s.toString().replaceAll("[^0-9]", ""); // for example, if need
        chatTextArea.setText(s_new);
        chatTextArea.setSelection(start + count + s_new.length() - s.length());
        chatTextArea.addTextChangedListener(this);
    }