java.lang.IndexOutOfBoundsException: getChars (7 ... 0) имеет конец перед началом - PullRequest
3 голосов
/ 06 февраля 2010

Мои пользователи отправляют мне необработанные исключения через 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)

Ответы [ 5 ]

3 голосов
/ 06 февраля 2010

Это известная ошибка в платформе Android. Вот ссылка на выпуск .

1 голос
/ 13 февраля 2015

если android не может установить выделение, которое вы делаете, используя позицию курсора ... я решил проблему, поставив это точно перед строкой сбоя

editor.setSelection(editor.getText().length(), editor.getText().length());
0 голосов
/ 20 августа 2018

Поздно, но вчера я понял эту проблему. Проблема в вашем случае, если ваш конец перед началом, как 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));
        }
0 голосов
/ 04 августа 2016

Я исправил это с помощью пользовательского textEntry. Поменял onSelectionChanged и положил туда код из loopj!

Мой код:

@Override
protected void onSelectionChanged(int selStart, int selEnd) {
    if (selStart >= 0) {
        super.onSelectionChanged(selStart, selEnd);
    } else {
        setSelection(getText().length());
    }
}
0 голосов
/ 24 сентября 2011

Для тех, кто все еще борется с этой проблемой, размещение следующего кода в onResume вашей Деятельности решит ее:

textEntry.setSelection(textEntry.getText().length(), textEntry.getText().length());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...