首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin Android绑定项目

Xamarin Android绑定项目
EN

Stack Overflow用户
提问于 2019-09-03 13:26:58
回答 1查看 125关注 0票数 0

我正在尝试为ACR1225U蓝牙读卡器构建一个与Android绑定的Xamarin绑定项目。

在添加AAR文件之后,我很难通过第一个构建。生成的文件之一是实现一个与其实现的接口上定义的方法不匹配的方法。我得到了下面的例外。

代码语言:javascript
复制
'GetPropertyAction' does not implement interface member 'IPrivilegedAction.Run()'. 'GetPropertyAction.Run()' cannot implement 'IPrivilegedAction.Run()' because it does not have the matching return type of 'Object'.

自动生成的代码是:

代码语言:javascript
复制
[Register ("run", "()Ljava/lang/String;", "GetRunHandler")]
public virtual unsafe string Run ()

任何想法都将不胜感激!

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-04 02:29:50

您需要将managedReturn类型的GetPropertyAction.Run()更改为Object,但不确定是System.Object还是Java.Lang.Object。我猜是Java.Lang.Object

关于如何更改返回类型的文档:https://learn.microsoft.com/en-us/xamarin/android/platform/binding-java-library/customizing-bindings/java-bindings-metadata#managedreturn

managedReturn更改方法的返回类型。这不会更改返回属性(因为对返回属性的更改可能导致对JNI签名的不兼容更改)。在下面的示例中,追加方法的返回类型从SpannableStringBuilder更改为IAppendable (回想一下C#不支持协变量返回类型):

代码语言:javascript
复制
<attr path="/api/package[@name='<replace.with.the.actual.name.of.the.package.in.java>']/
      class[@name='GetPropertyAction']/
      method[@name='Run']" 
      name="managedReturn">Java.Lang.Object</attr>

像这样的东西应该管用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57772724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档