![](/img/trans.png)
[英]IndexOutOfBoundsException in SpannableStringBuilder Android
[英]Android SpannableStringBuilder IndexOutOfBoundsException
最近,由於 Android 在內部拋出 IndexOutOfBoundsException,我們的應用程序中遇到了很多崩潰。
該問題發生在具有 static 布局的屏幕上,該布局由 API 級別 26 -> 31 上的 TextView、復選框和按鈕以及所有制造商組成。
我們無法以任何方式重現它,但我們嘗試通過在 TextViews 上設置android:importantForAccessibility="no"
來“盲目地”修復它。
我很高興聽到任何想法可能是什么問題:)
Fatal Exception: java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1318)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:684)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:676)
at android.view.accessibility.AccessibilityNodeInfo.setText(AccessibilityNodeInfo.java:2474)
at android.widget.TextView.onInitializeAccessibilityNodeInfoInternal(TextView.java:10642)
at android.view.View.onInitializeAccessibilityNodeInfo(View.java:7345)
at android.view.View.createAccessibilityNodeInfoInternal(View.java:7304)
at android.view.View.createAccessibilityNodeInfo(View.java:7289)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:146)
at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
at android.view.View.onInitializeAccessibilityEventInternal(View.java:7241)
at android.widget.TextView.onInitializeAccessibilityEventInternal(TextView.java:10623)
at android.view.View.onInitializeAccessibilityEvent(View.java:7229)
at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:7091)
at android.view.View.sendAccessibilityEventUnchecked(View.java:7076)
at android.view.View$SendViewStateChangedAccessibilityEvent.run(View.java:26260)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7529)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
我解決了這個問題。
在我們的例子中,問題是我們使用了一個 ClickableSpan,它也擴展了 NoCopySpan 接口。 設置 android:importantForAccessibility="no" 只是部分修復,因為這個標志可以被忽略(如果你想支持可訪問性,你也可能需要避免這個標志)。
因此解決方案是刪除接口並始終在給定片段的 onDestroyView 方法中將給定 TextView 的文本設置為 null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.