gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:52:10 28 4
gpt4 key购买 nike

我正在使用 Android Studio 开发适用于 Android 的应用。我必须让用户将文本插入到具有最大长度的 EditText 中。为此,我使用了一个 lengthFilter 传递给它最大长度。

声明如下:

etMessage.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxMessageLength)});

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

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 中的字符串 (Compare) 不同时用户可以输入的剩余字符数。

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

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 但它仍然不起作用。

最佳答案

您有线程问题。 etMessage 的内容在第二次读取之前发生了变化。

关于java - Android EditText : java. lang.IndexOutOfBoundsException : getChars (0 . .. 16) 超出长度 15,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37031567/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com