Xamarin.Forms Android 绑定(bind)库错误

标签 xamarin binding xamarin.android xamarin.forms

我目前面临有关 Xamarin Forms Android Bindings 库的问题。 我已将 .jar 库放入我的绑定(bind)项目中,但我意识到该库未完全加载。

当我构建绑定(bind)项目时,它可以正确编译,但输出中仍然有一些警告。

1>BINDINGSGENERATOR : warning BG8102: Class Java.Util.LinkedHashMap has unknown base type Java.Util.HashMap.

1>BINDINGSGENERATOR : warning BG8103: Class Com.MyParams has invalid base type java.util.LinkedHashMap.

1>BINDINGSGENERATOR : warning BG8701: Invalid return type com.MyParams in method GetParams in managed type Com.TagOp.

1>BINDINGSGENERATOR : warning BG8801: Invalid parameter type com.MyParams in method TagOps in managed type Com.TagOp.

1>BINDINGSGENERATOR : warning BG8801: Invalid parameter type com.MyParams in method TagOps in managed type Com.TagOp.

1>BINDINGSGENERATOR : warning BG8801: Invalid parameter type com.MyParams in method TagPage in managed type Com.Tag.

在我的 Android 代码中,我无法使用 Com.MyParams 类,因为它尚未加载。

自 Xamarin for Visual Studio 2017 更新以来出现此问题。

您有解决这个问题的线索吗?提前致谢。

最佳答案

HashMap & LinkedHashMap未知……因此无法实例化任何基于它们的内容。

当数据绑定(bind)不知道某个类时,它要么缺少注释,要么无法扩展类 BaseObservable 和/或有错误的 get/set 方法名称(需要与字段名称匹配);有很多条件需要满足,具体取决于是否需要单向或双向数据绑定(bind)。检查生成的代码通常会给出需要更改哪些内容的线索。

但是,直接数据绑定(bind) JAR 类似乎根本不可能,除非向其中添加所需的注释,然后构建 JAR,以使它们可绑定(bind)。 Android 的文档 Data Binding Library和 Xamarin Java Bindings Metadata对此进行了解释(从头开始复制所需的 Java 类,完全可绑定(bind),即使不是唯一的方法,也可能是最快的方法)。

只能通过替换要绑定(bind)到 GUI 的类来解决这个问题 - 这可以使用相当简单的类,或者使用 Java decompiler 时实现。 (以便了解要使用的字段)。

关于Xamarin.Forms Android 绑定(bind)库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44925071/

相关文章:

ios - 在 iOS 中忽略 TableView 标题内的按钮单击

android - xamarin 表单与 ListView 和复选框的实验室绑定(bind)问题

WPF OneWayToSource 绑定(bind)初始值

wpf - 绑定(bind) OnwayToSource 未按预期工作 - 有什么替代方案?

android - "CheckDuplicateJavaLibraries"任务意外失败

c# - Xamarin Forms 按钮单击事件在运行时崩溃

android - 如何以xamarin形式通过指纹注册用户?

c# - 不能在 'Binding' 类型的 'Source' 属性上设置 'Binding'

c# - 如何在 Database.EnsureCreated() EF Xamarin.Forms 之后使用 Database.Migration()

c# - 无法将位图转换为字节 []