1. 程式人生 > >bug記錄:TextView java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0

bug記錄:TextView java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0

2018-12-17 13:23:47.995 21217-21217/com.my.app E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.baihe.pie, PID: 21217
    java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
        at android.text.SpannableStringInternal.checkRange(SpannableStringInternal.java:442)
        at android.text.SpannableStringInternal.setSpan(SpannableStringInternal.java:163)
        at android.text.SpannableStringInternal.setSpan(SpannableStringInternal.java:152)
        at android.text.SpannableString.setSpan(SpannableString.java:46)
        at android.text.Selection.setSelection(Selection.java:76)
        at android.widget.Editor$SelectionModifierCursorController.resetDragAcceleratorState(Editor.java:5790)
        at android.widget.Editor$SelectionModifierCursorController.resetTouchOffsets(Editor.java:5780)
        at android.widget.Editor.onFocusChanged(Editor.java:1269)
        at android.widget.TextView.onFocusChanged(TextView.java:9844)
        at android.view.View.clearFocusInternal(View.java:6834)
        at android.view.View.unFocus(View.java:6867)
        at android.view.ViewGroup.unFocus(ViewGroup.java:1104)
        at android.view.ViewGroup.unFocus(ViewGroup.java:1104)
        at android.view.ViewGroup.requestChildFocus(ViewGroup.java:751)
        at android.support.v7.widget.RecyclerView.requestChildFocus(RecyclerView.java:2614)
        at android.view.ViewGroup.requestChildFocus(ViewGroup.java:757)
        at android.view.ViewGroup.requestChildFocus(ViewGroup.java:757)
        at android.view.View.handleFocusGainInternal(View.java:6661)
        at android.view.View.requestFocusNoSearch(View.java:10935)
        at android.view.View.requestFocus(View.java:10914)
        at android.view.View.requestFocus(View.java:10881)
        at android.view.View.requestFocus(View.java:10823)
        at android.view.View.onTouchEvent(View.java:13133)
        at android.widget.TextView.onTouchEvent(TextView.java:9930)
        at android.view.View.dispatchTouchEvent(View.java:11843)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2981)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2668)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2981)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2668)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2981)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2668)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2981)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2668)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2981)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2668)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2981)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2668)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2981)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2668)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2981)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2668)
        at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:552)
        at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1959)
        at android.app.Activity.dispatchTouchEvent(Activity.java:3526)
        at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:505)
        at android.view.View.dispatchPointerEvent(View.java:12082)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5325)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5109)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4623)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4676)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4642)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4769)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4650)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4826)
2018-12-17 13:23:47.996 21217-21217/com.my.app E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4623)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4676)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4642)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4650)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4623)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7222)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7196)
        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7157)
        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7379)
        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:193)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:379)
        at android.os.Looper.loop(Looper.java:144)
        at android.app.ActivityThread.main(ActivityThread.java:7383)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)

 

TextView在 RecyclerView中使用,像對話列表這樣的。

當TextView 設定可以滑動選擇為true的時候,這個bug可以必先,先選中某些文字,再按住TextView滑動超出TextView邊框,這個時候會有選中的文字,但是不會有左右選中的光標出現。再點按其他Textview, 必崩潰,這個是系統的bug,目前沒精力去看原始碼解決這個問題,先記錄一下。