当前位置: 首页 > 知识库问答 >
问题:

Xamarin Android库绑定,移除重写修改器

袁泓
2023-03-14

我试图在Xamarin Android绑定项目中绑定一个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 {
            // ...
        }
    }

    // ...
}

我在文档中没有找到任何关于添加/删除诸如“override”或“virtual”之类的修饰符的内容。

我试过了,但没有成功:

<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,这里有一个指向readerview.Java文件的直接链接。

编辑2:Xamarin绑定项目也在GitHub上,您将找到Jar库:https://GitHub.com/asimmon/mupdf-for-Xamarin-Android

共有1个答案

马淇
2023-03-14

解决方案是修改metadata.xml中方法的可见性:

<attr 
   path="/api/package[@name='com.artifex.mupdfdemo']/class[@name='ReaderView']/method[@name='getAdapter']"
   name="visibility">public</attr>

这将有效地从方法的签名中删除override关键字。

 类似资料:
  • 问题内容: 如何停止事件的处理或切换事件的功能? 修改后的代码: 问题答案: 您只需使用事件的新功能再次调用即可。既然你没有利用第三个参数,在此只是简单地覆盖任何已经存在。默认情况下,此参数为,但它也接受,它将在该事件已触发的回调中添加回调。 但是,如果您开始使用该可选参数,则需要使用该函数删除单个回调。当你调用一个返回。您可以将此作为第二个参数传递给。 例:

  • 本文向大家介绍浅谈Java中的重载,重写,多态,静态绑定、动态绑定,包括了浅谈Java中的重载,重写,多态,静态绑定、动态绑定的使用技巧和注意事项,需要的朋友参考一下 本文主要研究的是关于Java中重载,重写,多态,静态绑定、动态绑定的相关内容,具体如下。 重载,英文名是overload,是指在一个类中定义了一个以上具有相同名称的方法,这些方法的参数个数、参数类型和顺序不能相同。返回类型可以相同,

  • 问题内容: 有没有办法修改闭包内部变量之一的绑定值?查看示例以更好地理解它。 问题答案: 我认为在Python中没有任何方法可以做到这一点。定义闭包后,将捕获封闭范围内变量的当前状态,并且不再具有可直接引用的名称(从闭包外部)。如果要再次调用,则新的闭包将具有与封闭范围不同的变量集。 在简单的示例中,使用类可能会更好: 如果您确实使用了这种技术,我将不再使用该名称,因为它实际上不再是一个闭包。但是

  • 问题内容: 昨天我接受了两个小时的技术电话面试(我通过了,woohoo!),但是我完全想出了以下有关Java动态绑定的问题。令人困惑的是,几年前我曾当过助教时曾向大学生教授这一概念,所以我给他们提供错误信息的前景有点令人不安… 这是给我的问题: 我断言输出应该是覆盖方法中的两个单独的打印语句:和。后一种情况是显而易见的,而在前一种情况下,即使t1具有Object类型的引用,也将其实例化为Test类

  • 是否有可能静态解析被覆盖的方法? 调用虚拟绑定和动态绑定之间是什么关系?所有调用的虚拟方法都是动态绑定的吗? 这里x.display显示调用虚拟?这是什么意思?这意味着它是动态绑定的吗?