在Xamarin.Android中将数据从一个活动传递到另一个活动

时间:2014-09-25 19:35:40

标签: c# android xamarin

我想在Class Object应用中将Xamarin.Android从一个活动传递到另一个活动。 我可以使用Intent.PutExtra方法传递简单字符串。

有人知道吗。感谢anyhelp:)

2 个答案:

答案 0 :(得分:12)

只是添加以防其他人遇到此问题。关于Xamarin / .NET的好处是使用JSON是多么容易。您可以将数据序列化为字符串并将其传递给Extras。

JSON.NET是一个很好的库(你可以在Xamarin组件商店找到),并且在.NET中也有一些内置的JSON类。使用JSON.NET的一个例子是这样的。

Intent i = new Intent(Application.Context, typeof(SecondActivity));
i.PutExtra("key", JsonConvert.SerializeObject(myObject));
StartActivity(i);

在另一个Activity中,您可以反序列化它。

var obj = JsonConvert.DeserializeObject<OBJ_TYPE>(Intent.GetStringExtra("key"));

这比我认为使用静态参考更好。

答案 1 :(得分:3)

这个概念与标准(非Xamarin)应用程序相同。

您可以使用Intent#putExtra(String, Parcelable)传递任何实现Parcelable接口的对象作为额外内容。

Parcelable界面有点复杂,因此请务必阅读文档以确保您的班级符合要求。您可能还想查看this SO question,了解有关创建Parcelable课程的详情。

您无法通过Intent传递对象引用。这是因为活动旨在完全相互独立地工作。用户可以在执行其他任务时在后台抛出您的Activity,因此完全有可能(很可能)您的Activity变量将被垃圾收集。当用户稍后返回您的Activity时,它应该能够重新创建其状态。

如果确实需要直接传递对象的引用,可以通过使该对象成为静态变量来实现。虽然这是解决从一个Activity到另一个Activity的数据问题的快速而肮脏的方法,但它并没有解决在某些时候可能被垃圾收集的变量的问题,并且通常是一个糟糕的设计选择。