【问题标题】:How to open or access data from an Android Fragment from Xamarin Forms code?如何从 Xamarin Forms 代码打开或访问 Android 片段中的数据?
【发布时间】:2019-07-03 19:28:34
【问题描述】:

我有一个 Android 片段,它有一个输出十六进制字符串的函数。我需要某种方式从 Xamarin Forms 代码中打开此片段,或将字符串发送到我的 Xamarin Forms 页面。

我试图实现一个 MessagingCenter 脚本,它将字符串发送到我的 Xamarin Forms 代码,但我的问题是我无法弄清楚如何从 Forms 创建一个可以启动 Android Fragment 的意图。我需要的是某种方式,当在表单中按下按钮时,它会调用 Fragment 或使用该 Fragment 打开一个 android 页面。

Xamarin 表单:

private void OnGenerate(object sender, EventArgs e)
{
    MessagingCenter.Subscribe<App, string>(App.Current, "OpenPage", (snd, arg) =>
    {
        Device.BeginInvokeOnMainThread(() => {
            tagLabel.Text = arg;
        });
    });
}

【问题讨论】:

  • 如果你想从 Forms 调用一些 Android 特定的代码,使用 DependencyService。是否有理由让它特别是一个片段,或者你可以将代码移动到它自己的类中吗?
  • 谢谢,我会看看如何实现它。我想我应该能够将代码移动到它自己的类中。

标签: c# android-fragments xamarin xamarin.forms xamarin.android


【解决方案1】:

你为什么不直接使用Preferences API?您只需将 nuget 包添加到您的 Core 和 Android 项目。

然后在您的 Android 项目中,存储该值

Preferences.Set("my_key", "my_value");

在您的核心项目中,您可以使用

var myValue = Preferences.Get("my_key", "default_value");

【讨论】:

  • 谢谢,我认为这对我有用。你知道我如何通过 Xamarin Forms 代码调用 Android 函数吗?例如,当在 Forms 页面上按下按钮时,我需要它来运行 Android 部分。
  • 如果您想在按下按钮时运行 Android 功能,最简单的方法是使用渲染器创建自定义按钮:wintellect.com/…(或者只需创建自定义页面渲染器)跨度>
  • 谢谢,我试试看。
  • 你能在 Github 上分享你的代码链接,以便我可以克隆它吗?或者创建一个最小的示例项目,其中包含您正在尝试做的事情?您的错误可能与属性一样小
  • 是的,抱歉,结果确实很简单。问题原来是我在尝试获取它的上下文时没有将活动指定为 Android.App.Activity 。自定义渲染器现在按预期工作。非常感谢您的帮助!
猜你喜欢
  • 2019-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 2022-01-19
相关资源
最近更新 更多