最近,由于安卓系统内部抛出了IndexOutOfBoundsException,我们在应用程序中经历了很多崩溃。
这个问题发生在带有静态布局的屏幕上,这些屏幕由TextViews、-> 31级别上的复选框和按钮以及所有制造商组成。
我们一直无法复制它,但是我们试图通过在android:importantForAccessibility="no"上设置TextViews来“盲目地”修复它。
我很乐意听到任何有关问题的意见:)
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)发布于 2021-12-16 09:58:59
我解决了这个问题。
在我们的例子中,问题是我们使用了一个ClickableSpan,它也扩展了NoCopySpan接口。设置android:importantForAccessibility="no“只是部分修复,因为这个标志可能会被忽略(如果您想支持可访问性,也可能需要避免此标志)。
因此,解决方案是删除接口,并在给定片段的TextView方法中始终将给定onDestroyView的文本设置为null。
https://stackoverflow.com/questions/70113706
复制相似问题