我的用户通过http://code.google.com/p/android-remote-stacktrace/
向我发送未处理的例外情况我得到以下内容但不知道它意味着什么。
java.lang.IndexOutOfBoundsException: getChars (7 ... 0) has end before start
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:935)
at android.text.SpannableStringBuilder.getChars(SpannableStringBuilder.java:847)
at android.text.TextUtils.getChars(TextUtils.java:69)
at android.text.SpannableStringBuilder.<init>(SpannableStringBuilder.java:59)
at android.text.SpannableStringBuilder.subSequence(SpannableStringBuilder.java:839)
at android.widget.TextView.extractTextInternal(TextView.java:4541)
at android.widget.TextView.reportExtractedText(TextView.java:4580)
at android.widget.TextView.finishBatchEdit(TextView.java:4723)
at android.widget.TextView.endBatchEdit(TextView.java:4705)
at com.android.internal.widget.EditableInputConnection.endBatchEdit(EditableInputConnection.java:54)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:586)
at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:174)
at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:120)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:231)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:57)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4338)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:3)
这是Android框架中的已知错误。这是the issue的链接。
答案 1 :(得分:1)
如果android无法使用光标位置设置选择... 我通过把它放在崩溃线之前来解决这个问题
editor.setSelection(editor.getText().length(), editor.getText().length());
答案 2 :(得分:0)
对于仍在努力解决此问题的任何人,将以下代码放入您的活动onResume
中将解决此问题:
textEntry.setSelection(textEntry.getText().length(), textEntry.getText().length());
答案 3 :(得分:0)
我用自定义textEntry修复了它。 改变onSelectionChanged并将loopj中的代码放在那里!
我的代码:
@Override
protected void onSelectionChanged(int selStart, int selEnd) {
if (selStart >= 0) {
super.onSelectionChanged(selStart, selEnd);
} else {
setSelection(getText().length());
}
}
答案 4 :(得分:0)
现在晚了,但是昨天我发现了这个问题。问题是在您的情况下,您的结尾是在开始之前,例如7 .... 0。如果您要突出显示一个文本,则您的开始应该小于结尾,这是错误的。查看已发布的示例,它可以正常工作。
答案是给那些仍然有此问题的人。
String searchText = "Your search String";
String qr_code = "Your String";
int length = searchText.length();
if (length > 0) {
//color your text here
int index = qr_code.indexOf(searchText);
SpannableString sb = new SpannableString(qr_code);
ForegroundColorSpan fcs = new ForegroundColorSpan(getResources().getColor(R.color.colorAccent));
sb.setSpan(fcs, index, (index+length), Spanned.SPAN_EXCLUSIVE_INCLUSIVE)
holder.textViewShortCode.setText(sb);
} else {
textViewShortCode.setText(Html.fromHtml(qr_code));
}
答案 5 :(得分:0)
我遇到了同样的问题并修复了它。我在两个地方遇到了应用崩溃错误。
“searchText”下面是 AutoCompleteTextView(它是一种 EditText 类型)
我在这行 searchText.ClearFocus();
中遇到错误。
我修复了在此行之前添加一行的问题,如下所示,
searchText.SetSelection(searchText.Text.Length, searchText.Text.Length); searchText.ClearFocus();
我在现有事件中遇到了同样的错误。 我修复了在事件内部执行与上述 1 解决方案类似的操作。
public void OnLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { searchText.DropDownAnchor = Resource.Id.appbar; searchText.DropDownWidth = ViewGroup.LayoutParams.MatchParent; ....... searchText.SetSelection(searchText.Text.Length, searchText.Text.Length); }