某天,一个同事突然拿着一台Android 6.0的手机过来,说有个地方闪退,我笑着说不可能,这地方已经测试过很多次了,然后我顺手拿起手机点了几下,发现手机卡住不动,我就知道被打脸了。
抛出的异常如下
异常.png
可以看得出是找不到fromHtml(String,I)这个静态方法,网上查了一下资料,发现这个方法是Android7.0开始加上的,所以故障很明显了,在6.0手机上使用7.0才有的方法,肯定是找不到的。
解决办法如下
public static Spanned fromHtml(String html) {
return fromHtml(html, Html.FROM_HTML_MODE_LEGACY);
}
@SuppressWarnings("deprecation")
public static Spanned fromHtml(String html, int flags) {
if (html == null) {
return new SpannableString("");
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return Html.fromHtml(html, flags);
} else {
return Html.fromHtml(html);
}
}
在Android7.0以后,open static fun fromHtml(source: String!): Spanned!
过时了,推荐使用两个参数的方法open static fun fromHtml(source: String!, flags: Int): Spanned!,但是两个参数的这个方法需要做好版本控制,只有在7.0及以上才能使用。
其中flags可选两个参数
FROM_HTML_MODE_COMPACT:html块元素之间使用一个换行符分隔
FROM_HTML_MODE_LEGACY:html块元素之间使用两个换行符分隔













网友评论