首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android EditText: java.lang.IndexOutOfBoundsException: getChars (0 . 16)长度超过15

Android EditText: java.lang.IndexOutOfBoundsException: getChars (0 . 16)长度超过15
EN

Stack Overflow用户
提问于 2016-05-04 15:04:59
回答 2查看 2.2K关注 0票数 1

我正在使用Android为Android开发一个应用程序。我必须让用户将文本插入到最大长度的EditText中。为了达到这个目的,我使用了一个lengthFilter,将最大长度传递给它。

在此,声明:

代码语言:javascript
复制
etMessage.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxMessageLength)});

在另一个线程中,我执行以下代码:

代码语言:javascript
复制
while (!startEncoding){

    final String temp = etMessage.getText().toString();

    if (!(Comparison.equals(temp))) {
        Comparison = temp;
        handler.post(new Runnable() {
            @Override
            public void run() {
                tvNumCharacters.setText(Integer.toString(maxMessageLength - etMessage.length()));
            }
        });
    }
}

最后几行只显示在TextView (tvNumCharacters)中,当EditText (temp)中的字符串与以前包含在EditText (EditText)中的字符串不同时,用户可以输入的剩余字符数。

问题是:当用户删除一些字符(独立地从已经插入的字符串的实际长度中删除)时,会引发以下异常:

代码语言:javascript
复制
AndroidRuntime: FATAL EXCEPTION: Thread-8364
Process: com.user.steganography, PID: 12057
java.lang.IndexOutOfBoundsException: getChars (0 ... 16) ends beyond length 15
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1090)
at android.text.SpannableStringBuilder.getChars(SpannableStringBuilder.java:972)
at android.text.SpannableStringBuilder.toString(SpannableStringBuilder.java:994)
at com.user.steganography.Coding.checkTextLength(Coding.java:111)
at com.user.steganography.Coding.access$000(Coding.java:19)
at com.user.steganography.Coding$2.run(Coding.java:84)
at java.lang.Thread.run(Thread.java:818)

有时,当只删除一个字符时,它会崩溃,而其他字符只会在删除更多字符时崩溃。

etMessage.getText().toString()被召回时就会发生这种情况。

有人能给我一个解决这个问题的办法吗?我已经尝试过更改属性android:inputType,但它仍然无法工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-05 16:04:29

解决方案

通过使用addTextChangedListener(TextWatcher watcher),避免了线程问题,一切都很好。

票数 0
EN

Stack Overflow用户

发布于 2016-05-04 15:15:38

你有线程问题。etMessage的内容在进行二读之前会被更改。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37031567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档