【问题标题】:Android TextWatcher StackOverflow errorAndroid TextWatcher StackOverflow 错误
【发布时间】:2015-08-29 17:12:52
【问题描述】:

我已经知道有很多问题都在问同样的问题,但它们对我不起作用。这是代码(我使用代码为 EditText 中的文本部分着色)-

et_note.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) {
                if (textCC.contains("sample_text")) {
            String syntaxText = "sample_text";
            int ofe = textCC.indexOf(syntaxText, 0);
            int nextOfe = textCC.indexOf(syntaxText, ofe);
            for (int ofs = 0; ofs < textCC.length() && ofe != -1 && nextOfe != -1; ofs = nextOfe + 1) {
                ofe = textCC.indexOf(syntaxText, ofs);
                nextOfe = textCC.indexOf(syntaxText, ofe + 1);
                if (ofe == -1 || nextOfe == -1) {
                    break;
                } else {
                    Spannable WordtoSpan = new SpannableString(et_note.getText());
                    WordtoSpan.setSpan(new ForegroundColorSpan(0xFF00FF00), ofe, nextOfe + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                    et_note.setText(WordtoSpan, TextView.BufferType.SPANNABLE);
                }
            }
        }
            }
            @Override
            public void afterTextChanged(Editable editable) {
            }
        });

它给出堆栈溢出错误。

有效但不合适的答案 -

1) 在代码前添加et_note.removeTextChangedListener(this) 并在代码后添加et_note.addTextChangedListener(this) - 这个工作但不正常,应用程序变得非常慢。

还有其他方法可以帮助我吗?谢谢。

【问题讨论】:

标签: android android-edittext stack-overflow textwatcher


【解决方案1】:

感谢 CommonsWare,我找到了答案。只是发布这个答案来帮助别人。这解决了我的问题 -
而不是这个,

Spannable WordtoSpan = new SpannableString(et_note.getText());
                WordtoSpan.setSpan(new ForegroundColorSpan(0xFF00FF00), ofe, nextOfe + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                et_note.setText(WordtoSpan, TextView.BufferType.SPANNABLE);

我用过这个-

et_note.getText().setSpan(new ForegroundColorSpan(0xFF00FF00), ofe, nextOfe + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多