我想在Class Object
应用中将Xamarin.Android
从一个活动传递到另一个活动。
我可以使用Intent.PutExtra
方法传递简单字符串。
有人知道吗。感谢anyhelp:)
答案 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的数据问题的快速而肮脏的方法,但它并没有解决在某些时候可能被垃圾收集的变量的问题,并且通常是一个糟糕的设计选择。