首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpannableStringBuilder: indexOutOfBoundsException setSpan结束长度超过0

SpannableStringBuilder: indexOutOfBoundsException setSpan结束长度超过0
EN

Stack Overflow用户
提问于 2011-12-22 17:43:27
回答 4查看 8.4K关注 0票数 9

我在android上工作。我有个问题。当我再次单击文本框时,我的应用程序崩溃。

这是我的Logcat消息:

代码语言:javascript
复制
java.lang.IndexOutOfBoundsException: setSpan (4 ... 4) ends beyond length 0
android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:943)
android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:522)
android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:514)
android.text.Selection.setSelection(Selection.java:74)
android.text.Selection.setSelection(Selection.java:85)
android.text.method.ArrowKeyMovementMethod.onTouchEvent(ArrowKeyMovementMethod.java:410)
android.widget.TextView.onTouchEvent(TextView.java:6715)
android.widget.EditText.onTouchEvent(EditText.java:190)
android.view.View.dispatchTouchEvent(View.java:3766)
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1731)
com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1120)
android.app.Activity.dispatchTouchEvent(Activity.java:2086)
com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1715)
android.view.ViewRoot.handleMessage(ViewRoot.java:1787)
android.os.Handler.dispatchMessage(Handler.java:99)

请帮我找出这个问题的原因。提前谢谢你。

EN

回答 4

Stack Overflow用户

发布于 2011-12-22 17:45:45

问题的原因是以下错误:java.lang.IndexOutOfBoundsException: setSpan (4 ... 4) ends beyond length 0

显然你正在设置一个跨度,但是文本字段是空的,给出一个IndexOutOfBoundsException,在你调用setSpan之前检查输入字符串的长度。

编辑:

简单说明一下,IndexOutOfBoundsException总是意味着您试图访问超出数组实际长度的数组的一部分。字符串对象被定义为字符数组。因此,当你试图做一些事情,但是字符串的长度等于零时,你实际上会超出数组的边界。

票数 2
EN

Stack Overflow用户

发布于 2015-06-19 22:01:09

你还没有解释你的代码。所以很难解决你的问题。

查看this博客。这可能会对你有帮助。这篇博客说的是一个时间选择器的问题。同样的道理也适用于EditText和TextView。

setSaveFromParentEnabled(false) & setSaveEnabled(true)应该可以解决这个问题。

代码语言:javascript
复制
tp = (TimePicker) findViewById(R.id.timePickerComponent);
//two lines to add after
tp.setSaveFromParentEnabled(false);
tp.setSaveEnabled(true);
票数 2
EN

Stack Overflow用户

发布于 2015-06-30 16:06:49

setSpan (4...4)的结尾长度超过了0,这意味着你有一个4个空格的字符串,它的实际长度/修剪长度为0,将选择设置为0会导致IndexOutOfBoundsException,你应该在设置选择之前检查修剪长度

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

https://stackoverflow.com/questions/8602012

复制
相关文章

相似问题

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