在 MonoDroid 上实现 IJavaObject

2024-01-24

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

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

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

为此我该怎么办?

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

Thanks


取自Xamarin 的文档 http://developer.xamarin.com/guides/android/advanced_topics/java_integration_overview/android_callable_wrappers/:

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

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

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

如果有帮助,我有一个实现 ILocationListener 的示例here https://github.com/gshackles/Sample-Projects/blob/master/MonoDroid/MonoDroidSamples/MonoDroidSamples/DemoActivities/LocationDemo/LocationActivity.cs。它直接在 Activity 上实现它,但您可以从 Java.Lang.Object 而不是 Activity 继承。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MonoDroid 上实现 IJavaObject 的相关文章

  • Xamarin 在通知点击时形成打开视图模型

    我正在使用此代码在通知栏中显示通知 点击通知后 将启动主要活动 是否可以使用 MvvmCross 在 Xamarin 表单应用程序中启动视图模型而不是活动 Intent notificationIntent new Intent conte
  • MvxImageView,无法将ImageUrl绑定到本地资源

    我将 MvvmCross 3 0 14 与 Xamarin Android 一起使用 我有一个 MvxImageView 如果我使用 android src 直接指定图像 不绑定 我可以显示特定的本地图形资源
  • 错误:存在部署错误

    当我尝试运行任何示例应用程序或新应用程序时 它显示此错误 有人可以帮忙吗 该错误告诉您尚未选择设备 运行应用程序之前请选择有效的设备 您需要选择一个物理手机 或 Android 模拟器 来部署应用程序 Ref 在设备上调试 https de
  • 如何在 Xamarin.Forms 上使用 Android AutoCompleteTextView

    我正在研究一个Xamarin forms项目但我需要使用Android Widget AutoCompleteTextView我该如何应用它 当我尝试添加时AutoCompleteTextView UserNameAutoComplete
  • 有没有办法可以自定义 Switch 颜色

    我的代码使用这样的标准开关
  • OnResume 相机重新初始化黑屏

    我有个问题 初始化相机进行预览并使另一个应用程序进入焦点后 然后返回我的应用程序 预览显示为黑色 如果我继续拍照 它会拍摄我通常将相机指向的位置的照片 我在 OnResume 覆盖上做错了什么吗 相关代码如下 public void Rel
  • Xamarin Android 绑定

    我正在尝试为此处提供的 android sdk 创建绑定https www nmi com sdks and apis CDNA https www nmi com sdks and apis CDNA 绑定项目构建完毕 我可以将其添加到我
  • 将 PDF 文档打印到 esc/pos 热敏打印机

    我们正在使用 xamarin forms 开发 POS APP 因为我们需要将收据打印到通过 LAN 连接的 esc pos 热敏打印机 我们的应用程序支持多语言 通过更改代码页使用 esc pos 命令打印多种语言效果非常好 但它仅适用于
  • Android 软键盘遮挡 ScrollView 中的 EditText

    我有一个 TableLayout 它在 ScrollView 内填充 parent 一切都很完美 除了当显示软键盘时它遮盖了最后几个 EditText 从技术上讲 屏幕无法再向下滚动 因为如果不显示键盘 屏幕就会容纳所有内容 只是当键盘显示
  • 当我使用非共享运行时构建 Monodroid 项目时,获取编码失败

    我正在尝试在我的 Monodroid 应用程序中使用 DotNetZip 库 当我启用共享运行时构建选项时 一切似乎都工作正常 当我禁用共享运行时时 该行 static System Text Encoding ibm437 System
  • Monodroid 环境变量

    在 Android 中 Android OS Environment 提供了一组可用的环境路径 但是 当考虑到跨平台功能时 我想将图片存储在图片文件夹中 因此考虑使用 System Environment GetFolderPath 然而
  • 减少 Xamarin.Forms 中的 APK 大小,APK 大小 80MB

    无法将 xamarin apk 大小减少到 80 MB 以下 执行以下操作 启用混淆器 配置 发布 平台 活动 任何 CPU 启用 Multi Dex true 启用开发人员检测 调试和分析 false 链接 SDK 和用户程序集 也仅尝试
  • Xamarin.Android 应用程序仅在干净编译时找到启动器活动

    我有一个Xamarin Android标记为 MainLauncher 的活动称为 Login 当我第一次按 F5 时 应用程序在模拟器中正常启动 然后我停下来 进行一些代码更改 再次按 F5 我可以看到应用程序在模拟器中启动 当我收到以下
  • 使用 Azure AD B2C 登录 Xamarin Android 应用

    经过一周的研究可与 Azure AD B2C 一起使用 Xamarin 以 Android 平台 而不是 Xamarin Forms 为目标的身份验证原理后 我终于寻求一些建议 我有一个带有 登录 按钮的活动 我想通过按钮的触摸事件登录到
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • 使用 MonoDroid 试用版调试应用程序

    我已经安装了 MonoDroid 试用版 我创建了一个 Hello World 应用程序并在模拟器中对其进行调试 但任何应用程序都会出现在 Android 设备模拟器上的应用程序列表中 问题是试用版还是我的应用程序中出现了一些错误 你能帮我
  • 使用 Xamarin Forms 显示图像

    Solved 答案是更新所有 nuget 软件包并针对较新版本的 Android 现在图像按预期加载 我对此并不满意 因为我完全使用了 Xamarin 提供的代码 并且针对较新的版本已弃用了代码所依赖的一些项目 初始版本是 Xamarin
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • Mvvm跨本地化:运行时切换

    有没有办法在运行时将当前语言更改为另一种语言 例如 能够在单击按钮时或启动应用程序时进行切换 获取用户语言并进行切换 如何告诉插件在启动时检查用户语言 在此先感谢您的帮助 有没有办法在运行时将当前语言更改为另一种语言 是的 打电话build
  • Android 缩放和密度问题

    Update 一些研究表明 华硕 Transformer TF700T 高端 的像素密度应约为 224 因此 android 报告的 159 值要么是错误的 要么已被某种方式修改 system 中的 lcd 密度键 build prop 由

随机推荐