首页 > 解决方案 > 如何在 App.css 页面上检索 MainActivity 发送的消息?

问题描述

MainActivity.cs我发送以下消息:

resultIntent.PutExtra("message", "string123");

然后在App.css我试图接受如下消息:

Intent.Extras.GetString("message", "");

但我使用的路径是MainActivity.cs ...

在此处输入图像描述

标签: c#xamarinxamarin.formsxamarin.android

解决方案


似乎您想在首次创建App构造函数时将消息从MainActivity传递给App 。这可以通过多种方式实现

选项 1(推荐)

只需为App构造函数提供一个参数,如下所示

public App(string message)
{
  InitializeComponent();

  MainPage = new AppShell(message);
}

您可以在创建时从MainActivity设置如下

protected override void OnCreate(Bundle savedInstanceState)
{
  base.OnCreate(savedInstanceState);

  Xamarin.Essentials.Platform.Init(this, savedInstanceState);
  global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
  LoadApplication(new App("string123"));
}

选项 2

我不喜欢的另一种选择可能是将 MainActivity 的实例传递给 App,如下所示

protected override void OnCreate(Bundle savedInstanceState)
{
  base.OnCreate(savedInstanceState);

  this.Intent.PutExtra("message", "string1234");

  Xamarin.Essentials.Platform.Init(this, savedInstanceState);
  global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
  LoadApplication(new App(this));

}

然后在 App 构造函数中你使用这个实例如下

Android.App.Activity _mainActivity;

public App(object mainActivity)
{
  InitializeComponent();

  string message = "Void";

  if (Device.RuntimePlatform == Device.Android)
  {
    _mainActivity = (Android.App.Activity)mainActivity;
    message = _mainActivity.Intent.Extras.GetString("message", "");
  }

  MainPage = new AppShell(message);
}

推荐阅读