【发布时间】:2017-04-22 22:00:56
【问题描述】:
我正在尝试在 Xamarin Android Binding 项目中绑定 Android PDF 库,但在属性中添加了不必要的“覆盖”修饰符:
public partial class ReaderView : global::Android.Widget.AdapterView, [...] {
// ...
public override unsafe global::Android.Widget.IAdapter Adapter {
// Metadata.xml XPath method reference: path="/api/package[@name='com.artifex.mupdfdemo']/class[@name='ReaderView']/method[@name='getAdapter' and count(parameter)=0]"
[Register ("getAdapter", "()Landroid/widget/Adapter;", "GetGetAdapterHandler")]
get {
// ...
}
// Metadata.xml XPath method reference: path="/api/package[@name='com.artifex.mupdfdemo']/class[@name='ReaderView']/method[@name='setAdapter' and count(parameter)=1 and parameter[1][@type='android.widget.Adapter']]"
[Register ("setAdapter", "(Landroid/widget/Adapter;)V", "GetSetAdapter_Landroid_widget_Adapter_Handler")]
set {
// ...
}
}
// ...
}
我没有找到任何关于在the documentation 中添加/删除修饰符的信息,例如“覆盖”或“虚拟”。
我试过这个没有成功:
<attr path="/api/package[@name='com.artifex.mupdfdemo']/class[@name='ReaderView']/method[@name='getAdapter' and count(parameter)=0]" name="override">false</attr>
<attr path="/api/package[@name='com.artifex.mupdfdemo']/class[@name='ReaderView']/method[@name='setAdapter' and count(parameter)=1 and parameter[1][@type='android.widget.Adapter']]" name="override">false</attr>
你们知道怎么做吗?
编辑 1:Java 项目在 GitHub 上:https://github.com/asimmon/MuPDF-for-Android,这里是 direct link to the file ReaderView.java。
编辑 2:Xamarin 绑定项目也在 GitHub 上,您将找到 Jar 库:https://github.com/asimmon/MuPDF-for-Xamarin-Android
【问题讨论】:
-
为什么要删除这个修饰符?
.jar/.aar是否有专门针对此项目的@override?您可以将 .jar/.aar 上传到您的问题吗?我会这么认为,因为它是AdapterView的Adapter的实现:developer.xamarin.com/api/property/… 和本机Java - developer.android.com/reference/android/widget/… / developer.android.com/reference/android/widget/… -
@JonDouglas,我添加了指向 GitHub 存储库的链接。我明天试试看
@override是否需要,谢谢。 -
解决方案是什么?当绑定从 Android.Widget.AdapterView 继承并覆盖了 get 和 set Adapter 方法的库时,我们遇到了同样的问题。
-
@JonDouglas 的主要问题是 Xamarin 非通用版本的 Android.Widget.AdapterView 没有 Adapter 属性或 getAdapter / setAdapter 方法,但正在公开 RawAdapter 属性 (developer.xamarin.com/api/type/Android.Widget.AdapterView)。要访问 Adapter 属性,它应该使用通用版本 (developer.xamarin.com/api/type/…)。
标签: dll xamarin binding xamarin.android