gpt4 book ai didi

xamarin.android - 在 MonoDroid 上实现 IJavaObject

转载 作者:行者123 更新时间:2023-12-03 09:45:57 26 4
gpt4 key购买 nike

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

作为 ILocationListener 契约(Contract)的一部分,我需要支持我的 JavaObject:

    public IntPtr Handle
{
get { throw new NotImplementedException(); }
}

我该怎么办?

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

谢谢

最佳答案

取自 Xamarin's docs :

There are times when you may need to implement an Android interface, such as Android.Content.IComponentCallbacks. Since all Android classes and interface extend the Android.Runtime.IJavaObject interface, the question arises: how do we implement IJavaObject?

The question was answered above: the reason all Android types need to implement IJavaObject is so that MonoDroid has an Android callable wrapper to provide to Android, i.e. a Java proxy for the given type. Since monodroid.exe only looks for Java.Lang.Object subclasses, and Java.Lang.Object implements IJavaObject, the answer is obvious: subclass Java.Lang.Object


基本上,在这些情况下,您应该始终从 Java.Lang.Object 继承,因为自己实现 IJavaObject 实际上不会起作用,因为 Android 的 Mono 不会生成可调用的包装器。
如果有帮助,我有一个实现 ILocationListener 的示例可用 here .它直接在 Activity 上实现它,但您可以从 Java.Lang.Object 而不是 Activity 继承。

关于xamarin.android - 在 MonoDroid 上实现 IJavaObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8573587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com