【问题标题】:Xamarin Android 6.0 Java.Lang.NoSuchMethodError with View.SetTextXamarin Android 6.0 Java.Lang.NoSuchMethodError 与 View.SetText
【发布时间】:2018-01-29 07:35:49
【问题描述】:

我已经为一个将 HTML 代码呈现为文本的标签制作了一个自定义渲染器。

当我尝试设置格式化文本时出现此错误:

未处理的异常: Java.Lang.NoSuchMethodError:没有静态方法“Landroid/text/Html;.fromHtml(Ljava/lang/String;I)Landroid/text/Spanned;”发生

这是我的一段代码:

Control.SetText(Html.FromHtml(View.Text.ToString(), FromHtmlOptions.ModeLegacy), TextView.BufferType.Spannable);

这仅在 Android 6.0 上发生,从 7.0 开始一切正常。

我该如何解决这个问题?

有解决方法吗?

谢谢!

更新

感谢@Jon Douglas,我以这种方式解决了问题:

 if (global::Android.OS.Build.VERSION.SdkInt >= global::Android.OS.BuildVersionCodes.N) {
   Control.SetText(Html.FromHtml(View.Text.ToString(), FromHtmlOptions.ModeLegacy), TextView.BufferType.Spannable);
 } else {
   // For API < 24 
   Control.SetText(Html.FromHtml(View.Text.ToString()), TextView.BufferType.Normal);
 }

对于“else”路径,VisualStudio 告诉我它已被弃用,但它仍然可以编译。

【问题讨论】:

    标签: c# android xamarin xamarin.forms nosuchmethoderror


    【解决方案1】:

    您正在使用 API 24 中引入的重载方法。因此,为了正确支持这一点,您将需要 runtime check 来检查 &lt; API 24 值,您将在其中使用非 API 24 Html.FromHtml 重载.

    请参阅Html 类,了解您可以适当使用的重载。例如:

    1 https://developer.android.com/reference/android/text/Html.html#fromHtml(java.lang.String)

    https://developer.android.com/reference/android/text/Html.html#fromHtml(java.lang.String, android.text.Html.ImageGetter, android.text.Html.TagHandler)

    【讨论】:

    • 谢谢!这解决了我的问题。我已经用解决方案更新了主帖。
    猜你喜欢
    • 2017-07-23
    • 2021-01-31
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多