首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android SpannableStringBuilder IndexOutOfBoundsException

Android SpannableStringBuilder IndexOutOfBoundsException
EN

Stack Overflow用户
提问于 2021-11-25 15:30:54
回答 1查看 366关注 0票数 0

最近,由于安卓系统内部抛出了IndexOutOfBoundsException,我们在应用程序中经历了很多崩溃。

这个问题发生在带有静态布局的屏幕上,这些屏幕由TextViews、-> 31级别上的复选框和按钮以及所有制造商组成。

我们一直无法复制它,但是我们试图通过在android:importantForAccessibility="no"上设置TextViews来“盲目地”修复它。

我很乐意听到任何有关问题的意见:)

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2021-12-16 09:58:59

我解决了这个问题。

在我们的例子中,问题是我们使用了一个ClickableSpan,它也扩展了NoCopySpan接口。设置android:importantForAccessibility="no“只是部分修复,因为这个标志可能会被忽略(如果您想支持可访问性,也可能需要避免此标志)。

因此,解决方案是删除接口,并在给定片段的TextView方法中始终将给定onDestroyView的文本设置为null。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70113706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档