c# - Xamarin Android 6.0 Java.Lang.NoSuchMethodError 与 View.SetText

标签 c# android xamarin xamarin.forms nosuchmethoderror

我为 Label 制作了一个自定义渲染器,将 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 告诉我它已被弃用,但它仍然可以编译。

最佳答案

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

参见 Html您可以适当使用的重载类。例如:

1 < API 24 的参数方法 - https://developer.android.com/reference/android/text/Html.html#fromHtml(java.lang.String)

3 < API 24 的参数方法 - https://developer.android.com/reference/android/text/Html.html#fromHtml(java.lang.String, android.text.Html.ImageGetter, android.text.Html.TagHandler)

关于c# - Xamarin Android 6.0 Java.Lang.NoSuchMethodError 与 View.SetText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48496458/

相关文章:

C# 独立 WebDAV

c# - Lambda 分组由 Max

c# - MVC ajax 发布到 Controller 操作方法

Android onClick 方法

ios - Xamarin 表单 : Is there a way to reduce the spacing on ToolBarItems

xamarin - 如何在NET标准项目中使用nuget包,该包仅兼容portable-net45+win8+wp8+wpa81?

ios - 使用 VS for Mac 打包和分发 Xamarin iOS 应用程序

java - 当简单的 Java Nio 客户端发送消息时 Netty 服务器抛出异常

启动进程时 Java Android ping IOException "Too many files open"

android - 要为 Android Activity 设置半透明背景?