我目前面临有关 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/