Xamarin Android绑定:如何使用库

时间:2016-04-26 16:04:45

标签: android xamarin binding

我的Xamarin Android Binding项目(修复了几个重复方法后)正确编译。

现在我必须使用库中的接口。 在Java中我这样做:

private PCLIAE87Events btProtListener;
btProtListener = new PCLIAE87Events () {
    @Override
    public void onLibraryStarted(PCLIAE87 library) {
        btProtLibrary = library;
    }
};

我怎么能用C#做什么? 我必须将此接口传递给函数

PCLIAE87.StartLibrary(this, new PCLIAE87Events())

但是作为方法参数传递的接口在C#中不起作用。

C#中的Java接口 PCLIAE87Events 自动绑定为 IPCLIAE87Events (公共接口IPCLIAE87Events:IAbstractPCLEvents,IJavaObject,IDisposable)

我还尝试创建一个实现Interface及其方法的类:

class PCLIAE87EventsImplementation : Java.Lang.Object, IPCLIAE87Events
{
    public void OnLibraryStarted(Java.Lang.Object p0)
    {
        throw new NotImplementedException();
    }

    public void OnPOSConnected()
    {
        throw new NotImplementedException();
    }

    public void OnPOSDisconnected()
    {
        throw new NotImplementedException();
    }
}

但我收到此错误

  

PCLIAE87EventsImplementation不是抽象的,也不会覆盖   抽象方法onLibraryStarted(PCLIAE87)在AbstractPCLEvents

我认为与Xamarin绑定错误有关,也许有人可以建议我在哪里检查?

谢谢!

1 个答案:

答案 0 :(得分:0)

C#不支持匿名类创建。所以你必须创建一个实现这个接口的类。据我所知,它应该是这样的:

class PCLIAE87EventsImplementation : PCLIAE87Events 
{
    piblic void OnLibraryStarted(PCLIAE87 library) 
    {
         btProtLibrary = library;
    }
}

然后你应该可以打电话了

PCLIAE87Events btProtListener = new PCLIAE87EventsImplementation();
PCLIAE87.StartLibrary(this, btProtListener);