没有实现接口成员'IComparable.CompareTo(Object)'

时间:2017-09-21 07:23:22

标签: android xamarin xamarin.android aar

我有一个android的.aar文件。我试图在我的xamarin.android应用程序中使用它。我按照链接https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-an-aar/

中给出的步骤进行操作

但是当我尝试构建我的库时,我遇到了错误

“没有实现接口成员'IComparable.CompareTo(Object)'”

我找到了一些解决方案,其中提到在metadata.xml中我们需要添加一些属性。所以我在那里添加了以下行

path="/api/package[@name='com.logicjunction.ljindoorandroidsdk']/class[@name='FloorPlanBeaconsMapping']/implements[@name='java.lang.Comparable']" 

名称= “类型” > java.lang.Comparable的>

但仍然得到同样的错误。我怎么解决这个问题?

2 个答案:

答案 0 :(得分:5)

在没有接口实现的情况下构建库时出错IComparable.CompareTo:

The error'

要解决此问题,需要在“ Additions ”文件夹中创建需要接口成员实现“IComparable.CompareTo(Object)”的库类的部分类,如下所示:

partial class with interface IComparable

命名空间应该与绑定库相同,在这种情况下,它是:“ Hirondelle.Date4j ”。

using Java.Lang;
namespace Hirondelle.Date4j
{
    public partial class DateTime : Object, IComparable
    {
        int IComparable.CompareTo(Object obj)
        {
            return CompareTo((DateTime)obj);
        }
    }
}

然后应该成功建立图书馆。

答案 1 :(得分:2)

所以我遇到了同样的问题,我可以通过帮助编译器在Metada.xmlTransforms文件夹中添加这些行)来解决它:

<add-node path="/api/package[@name='<JAVA_PACKAGE_NAME>']/class[@name='<CLASS_NAME>']">
    <method name="compareTo" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public">
        <parameter name="p0" type="java.lang.Object" />
    </method>
</add-node>