【发布时间】:2018-07-02 06:29:41
【问题描述】:
当我打电话给EditText.setSelection()时,我得到了这个异常
java.lang.IndexOutOfBoundsException: setSpan (N ... N) ends beyond length 10500
N 可以是任意数字。例如,如果我调用 setSelection(10476,10568) N 将是 10568。但 10500 是恒定的。
java.lang.IndexOutOfBoundsException: setSpan (10568 ... 10568) ends beyond length 10500
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1090)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:665)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:658)
at android.text.Selection.setSelection(Selection.java:78)
at android.widget.EditText.setSelection(EditText.java:91)
...
EditText 是否有任何限制导致此问题?
在进行选择之前,我会加载一个文本文件,该文件肯定包含超过 10500 个字符,因为它包含 ca. 12000 行。然后我调用EditText.setText() 将文件内容放入字段中。 EditText.setText() 工作没有任何问题。
First I thought there is something wrong with the file contents, but I loaded another file and when the selection occurred I got the same exception and it contained ends beyond length 10500
【问题讨论】:
-
看起来 TextView (EditText) 的最大长度有限制。有一个很奇怪,但是将这么长的文本设置到TextView中绝对不是一个好主意。可能 10500 是您系统的内存限制。检查这个:groups.google.com/forum/#!topic/android-developers/JVAm8vBaIQg
-
@VladMatvienko EdiText 有什么替代方案来完成它?再次 setText() 工作。如果有限制,那么在那一刻失败并且不等到调用 setSelection() 是合乎逻辑的。
-
文本可能会被截断为您的设备可以支持的任何内容。在您的情况下为 10500 个字符。
-
解决方案可以是将文本拆分成更小的块,例如在 ListView 中使用多个 TextView。
-
你设置成TextView后有检查过文本长度吗?是原装的还是10500的?
标签: java android android-edittext