Xamarin.android 在MonoDroid上实现IJavaObject

Xamarin.android 在MonoDroid上实现IJavaObject,xamarin.android,Xamarin.android,我目前正试图在一个类上实现一个ILocationListener,以便接收GPS更新-这不是在一个活动上,只是一个普通的C#类 作为ILocationListener合同的一部分,我需要支持I JavaObject: public IntPtr Handle { get { throw new NotImplementedException(); } } 我该怎么办 此外,是否有好的文档和/或博客文章讨论了C#类和Java对象如何在MonoDroid中绑

我目前正试图在一个类上实现一个ILocationListener,以便接收GPS更新-这不是在一个活动上,只是一个普通的C#类

作为ILocationListener合同的一部分,我需要支持I JavaObject:

    public IntPtr Handle
    {
        get { throw new NotImplementedException(); }
    }
我该怎么办

此外,是否有好的文档和/或博客文章讨论了C#类和Java对象如何在MonoDroid中绑定在一起-如果我能找到这些文档,那么我可能就不需要问这样的问题,我也希望能编写更好的代码


谢谢

我想我自己已经找到了拼图的第一块——似乎手边有一个Java.Lang.Object,我可以使用它

我将继续查找绑定信息-希望我能知道我在做什么:)

摘自:

有时您可能需要实现Android界面,例如Android.Content.IComponentCallbacks。由于所有Android类和接口都扩展了Android.Runtime.IJavaObject接口,因此出现了一个问题:我们如何实现IJavaObject

上面回答了这个问题:所有Android类型都需要实现IJavaObject的原因是MonoDroid有一个Android可调用包装器提供给Android,即给定类型的Java代理。由于monodroid.exe只查找Java.Lang.Object子类,而Java.Lang.Object实现了IJavaObject,因此答案显而易见:子类Java.Lang.Object

基本上,在这些情况下,您应该始终从Java.Lang.Object继承,因为自己实现IJavaObject实际上不起作用,因为Mono for Android不会生成可调用的包装器


如果有帮助,我有一个实现ILocationListener的示例。它直接在活动上实现,但您可以从Java.Lang.Object而不是活动继承。

这也解决了我的Seg故障崩溃问题[mono rt]在执行本机代码时得到了SIGSEGV。。。。。由实现IJavaObject的类引起的问题

对于仍然不理解的人,他的意思只是:“公共类locationManager:Java.Lang.Object,ILocationListener”