我希望在Xamarin.Android
应用程序中从一个活动传递一个Class Object
到另一个活动。 我可以使用Intent.PutExtra
方法传递简单字符串。
有人知道该如何实现吗?任何帮助都将不胜感激 :)
为了其他人能够找到这篇文章,我在这里补充一下。使用 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"));
在我看来,这比使用静态引用更好。
这个概念与标准应用程序(非Xamarin)相同。
您可以使用 Intent#putExtra(String, Parcelable)
作为额外参数传递任何实现 Parcelable
接口的对象。
Parcelable
接口有点复杂,因此请务必阅读文档以确保您的类符合要求。您可能还想查看 此 SO 问题 以获取有关创建 Parcelable
类的更多信息。
您无法通过 Intent
传递对象引用。这是因为活动被设计为完全独立于彼此工作。用户可以在执行其他任务时将您的 Activity 抛到后台,因此很可能会回收您的 Activity 变量。当用户稍后返回您的 Activity 时,它应该能够重新创建其状态。