Xamarin.Forms Android绑定库错误

时间:2017-07-05 11:32:30

标签: xamarin binding xamarin.android xamarin.forms

我目前正面临有关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更新以来,就会出现此问题。

你有任何线索可以解决这个问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

HashMap& LinkedHashMap是未知的...因此,基于它们的任何内容都不能被实例化。

当数据绑定不知道某个类时,它或者缺少注释,可能不会扩展类BaseObservable和/或具有错误的get / set方法名称(需要匹配字段的名称);要满足相当多的条件,这取决于是否需要单向或双向数据绑定。查看生成的代码通常会给出一个必须改变的线索。

但是,直接对JAR类进行数据绑定甚至不可能,除非在它们中添加所需的注释然后构建JAR,以便使它们可绑定。 Android Data Binding Library和Xamarin Java Bindings Metadata的文档解释了它(从头开始复制所需的Java类,完全可绑定,可能是最快速的,如果不是唯一的方法)。

只能通过替换要绑定到GUI的类来解决它 - 这可以通过相当简单的类,或者使用Java decompiler(以便知道要使用的字段)。