Monodroid将Parcelable对象放入Bundle中

6

我一直在努力将一些值放入我的重写OnSaveInstanceState中的bundle中。我需要保存一些类对象以便在活动重新启动时使用,这意味着它们必须是可包含的,但是在Monodroid中似乎无法实现?

来源:http://docs.xamarin.com/android/about/limitations

如果不使用parcelable,我该如何将这些类对象保存到bundle中?我从服务器加载数据,不希望在用户旋转(再次调用OnCreate方法)等情况下再次加载。因此,将它们保存起来将减轻服务器在偶发的旋转等情况下的压力。

2个回答

5

看起来 Monodroid 终于支持 Parcelable 了,这现在是正确的答案。 - Lucas Arrefelt

4
无法在Mono for Android中实现IParcelable接口。引自文档:
“由于android.os.Parcelable接口要求: 实现Parcelable接口的类还必须有一个名为CREATOR的静态字段,该字段是实现Parcelable.Creator接口的对象。
因为mandroid.exe目前无法生成字段,所以无法实现此接口。将在未来版本中添加支持。”
另一种方法是将对象存储在活动外部,例如在子类化Application的类中。您可以使用静态属性在应用程序类中存储数据,或者通过从活动使用Application属性访问其实例属性/方法。有关使用Application的更多详细信息,请参见此问题

我最终使用了静态变量来解决这个问题,感谢您的澄清。 - Lucas Arrefelt
1
文档已更新,据说现在支持这个功能(“此限制适用于4.1版本之前的版本。在4.1版本中,您可以使用ExportAttribute和ExportField属性生成可以明确命名的Java方法和字段。”)。我现在要尝试一下,并发布任何积极的发现。 - samus
1
Xamarin的官方示例:https://github.com/xamarin/monodroid-samples/blob/master/ExportAttribute/ExportAttributeTest/MainActivity.cs - samus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接