Android java.lang.IndexOutOfBoundsException:索引1无效,大小为1

时间:2014-10-19 18:01:59

标签: java android

我刚收到这个崩溃日志,但无法理解它是由什么造成的。基本上我的应用程序是文本编辑器。我在TextView上有一个TextWatcher,但我不确定它是否存在问题,因为logcat dosent包含我的应用程序的任何一行。

java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
at java.util.ArrayList.get(ArrayList.java:304)
at android.widget.TextView.sendOnTextChanged(TextView.java:7231)
at android.widget.TextView.handleTextChanged(TextView.java:7290)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:8880)
at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:962)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:496)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:435)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:30)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:672)
at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:435)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:333)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)

3 个答案:

答案 0 :(得分:3)

我不确定这是否可以帮助其他人,但要解决这个问题,我已经做到了这一点:

我有一个带有textwatcher的edittext。

当我说:

editText.setText("");

我收到此错误。所以要解决这个问题,我必须删除监听器,设置文本并读取监听器。

希望它可以帮助别人。

答案 1 :(得分:2)

如果你在文本观察器本身编辑文本观察者的附加状态,似乎会发生这种情况。例如,如果我在观察者方法中删除了textwatcher,我就会发现这种情况。

验证,将onTextChanged的内容移动到afterTextChanged,然后查看是否从TextView $ ChangeWatcher.afterTextChanged触发了新的堆栈跟踪。

解决它,将该工作移至从该方法发布的处理程序或类似工具。

答案 2 :(得分:0)

这么晚,但对任何人都有用:

检查您的EditText是否具有textAllCaps="true"属性,并在需要时将其删除。