将Intent从一个活动传递到另一个活动

时间:2018-04-11 13:38:45

标签: android xamarin xamarin.android

我想将Intent转移到Xamarin.Android中的另一个活动。基本上我需要Intent.Data和Intent.ClipData到另一个活动,所以我使用下面的代码来传输Intent,但我不知道检索它的正确方法。

以下是主要活动

中的代码
Intent intent = new Intent(this, typeof(SecondActivity));
intent.PutExtra("FilesURI", 0);
intent.PutExtras(intent);
StartActivity(intent);

在SecondActivity中

if (intent.HasExtra("FilesURI"))
{
    var data = (Intent)intent.Extras;
    ProcessIntent(intent);
}

如何在第二项活动中检索Intent?

3 个答案:

答案 0 :(得分:0)

这一行:intent.PutExtras(intent);将复制所有额外的意图数据。 假设意图具有:“DATA”和“CLIPDATA”键。您可以在SecondActivity中以这样的方式检索

string text = Intent.GetStringExtra ("DATA") ?? "Data not available";

答案 1 :(得分:0)

Xamarin文档有一个页面,它提供了一个完全按照您的要求进行操作的示例,通过intent extras将数据从一个活动传递到另一个活动。

总之,您需要在接收活动中调用以下方法:

string text = Intent.GetStringExtra ("FilesURI") ?? "Data not available";

更详细的示例可以在Xamarin文档中找到,其中上面的示例是从Passing Data Between Activities

中提取的。

答案 2 :(得分:0)

这是解决方案,感谢@YodaScholtz的提示。

我写了以下代码

在MainActivity中

Intent intent = new Intent(this, typeof(SecondActivity));
intent.PutExtra("ClipData", intent.ClipData);
StartActivity(intent);

SecondActivity代码

if (intent.HasExtra("ClipData"))
{
  var _data = intent.Extras;
  var _clipdata = (ClipData)_data?.GetParcelable("ClipData");
  intent.ClipData = _clipdata;
  ProcessIntent(intent);
}