我在android工作。我有个问题。当我第二次点击我的文本框时,我的应用程序崩溃了。
这是我的Logcat消息:
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)
请帮我找出这个问题的原因。 提前谢谢。
答案 0 :(得分:2)
您的问题的原因是以下错误:
java.lang.IndexOutOfBoundsException: setSpan (4 ... 4) ends beyond length 0
显然你正在设置某个范围,但文本字段为空,给出IndexOutOfBoundsException
,在调用setSpan之前检查输入字符串的长度。
编辑:
只是简短的说明,IndexOutOfBoundsException
总是意味着您正在尝试访问超出数组实际长度的数组的一部分。字符串对象定义为字符数组。因此,当您尝试执行某些操作但字符串的长度等于零时,实际上最终会超出数组的边界。
答案 1 :(得分:2)
您还没有解释过您的代码。所以很难解决你的问题。
检查this博客。它可能会帮助你。这篇博客讲述了一个时间选择器问题。这同样适用于EditText& TextView也。
setSaveFromParentEnabled(false) & setSaveEnabled(true) 应解决此问题。
tp = (TimePicker) findViewById(R.id.timePickerComponent);
//two lines to add after
tp.setSaveFromParentEnabled(false);
tp.setSaveEnabled(true);
答案 2 :(得分:1)
setSpan(4 ... 4)结束超过长度0,这意味着你有一个4个空白字符串,其实际/修剪长度为零,设置选择这将导致IndexOutOfBoundsException,你应该在设置之前检查修剪长度选择
答案 3 :(得分:0)
您可以在启动文本框(编辑文本或其他)后添加以下代码
editText.setSaveFromParentEnabled(false);
editText.setSaveEnabled(true);
有关此内容的更多文档,请参阅以下文档: