我目前正面临有关Xamarin Forms Android Bindings库的问题。 我在我的绑定项目中放了一个.jar库,我意识到库没有完全加载。
当我构建我的绑定项目时,它正确编译但我的输出中仍然有一些警告。
1> BINDINGSGENERATOR:警告BG8102:类Java.Util.LinkedHashMap具有未知的基类型Java.Util.HashMap。
1> BINDINGSGENERATOR:警告BG8103:类Com.MyParams具有无效的基类型java.util.LinkedHashMap。
1> BINDINGSGENERATOR:警告BG8701:托管类型Com.TagOp中方法GetParams中的返回类型com.MyParams无效。
1> BINDINGSGENERATOR:警告BG8801:托管类型Com.TagOp中方法TagOps中的参数类型com.MyParams无效。
1> BINDINGSGENERATOR:警告BG8801:托管类型Com.TagOp中方法TagOps中的参数类型com.MyParams无效。
1> BINDINGSGENERATOR:警告BG8801:托管类型Com.Tag中方法TagPage中的参数类型com.MyParams无效。
在我的Android代码中,我无法使用Com.MyParams
类,因为它未加载。
自从Xamarin for Visual Studio 2017更新以来,就会出现此问题。
你有任何线索可以解决这个问题吗?提前谢谢。
答案 0 :(得分:2)
HashMap& LinkedHashMap是未知的...因此,基于它们的任何内容都不能被实例化。
当数据绑定不知道某个类时,它或者缺少注释,可能不会扩展类BaseObservable
和/或具有错误的get
/ set
方法名称(需要匹配字段的名称);要满足相当多的条件,这取决于是否需要单向或双向数据绑定。查看生成的代码通常会给出一个必须改变的线索。
但是,直接对JAR类进行数据绑定甚至不可能,除非在它们中添加所需的注释然后构建JAR,以便使它们可绑定。 Android Data Binding Library和Xamarin Java Bindings Metadata的文档解释了它(从头开始复制所需的Java类,完全可绑定,可能是最快速的,如果不是唯一的方法)。
只能通过替换要绑定到GUI的类来解决它 - 这可以通过相当简单的类,或者使用Java decompiler(以便知道要使用的字段)。