gpt4 book ai didi

java - 使用 getSpans 方法获取 Spannable 中的所有 Span

转载 作者:行者123 更新时间:2023-12-02 09:30:46 26 4
gpt4 key购买 nike

我使用以下代码来获取可跨越字符串中的所有跨度。

SpannableStringBuilder str = new SpannableStringBuilder(editText.getText());
Object [] objectSpans = str.getSpans(0, str.length(), Object.class);

//loop through all spans
for (Object objSpan: objectSpans) {
Spanned spanned = (Spanned) objSpan;// Here I encounter a ClassCastException
start = spanned.getSpanStart(new Object());
end = spanned.getSpanEnd(new Object());
...
}

当我想将 objSpan 转换为 Spanned 时,我遇到了以下 ClassCastException(第 6 行)。

java.lang.ClassCastException: android.text.style.SpellCheckSpan cannot be cast to android.text.Spanned

如何解决这个问题?有没有更好的方法来获取可跨越字符串中的所有跨度?

最佳答案

使用instanceof而不是自动进行转换。

for (Object objSpan: objectSpans) {
if(objSpan instanceof Spanned){
Spanned spanned = (Spanned) objSpan;// Here I encounter a ClassCastException
start = spanned.getSpanStart(new Object());
end = spanned.getSpanEnd(new Object());
...
}
}

要了解问题所在,您可以阅读此内容 ClassCastException Documentation所以你可以阅读:

Thrown to indicate that the code has attempted to cast an object to a subclass of which it is not an instance. For example, the following code generates a ClassCastException:

因此,如果您想要进行cast,您必须确保该对象与您声明的对象类型相同,否则您将得到一个ClassCastException

关于java - 使用 getSpans 方法获取 Spannable 中的所有 Span,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58008311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com