2012-08-10 67 views

回答

5

据我所知,你只能保存原始数据(和它们的包装),以SharedPreferences

你为什么不创建自己的helper方法将通过捆绑迭代和保存所有值SharedPreferences ?

+2

SharedPreferences意味着存储简单的类型,但我想你可以系列化你捆绑成一个字节数组,并将其转换为字符串。 有人可能会争辩说,你只是将维护SharedPreferences的工作转移到维护Bundle的努力上。 – Sparky 2012-08-10 14:33:30

+0

我的方法是更喜欢框架中已有的方法和技术,而不是“重新发明轮子”。我的问题是要找出这样的辅助方法是否已经存在于Android SDK中,或者我确实应该创建自己的方法。我想你回答了我的问题。 +1。 – ateiob 2012-08-10 14:56:20

+0

@Sparky *“有人可能会争辩说,你只是取代了维护你的SharedPreferences而努力维护一个Bundle的努力。”* - 我非常认同这一点,但研究了使用Bundle.writeToParcel ()',然后将其序列化为一个'String',看起来更加通用和高效,而不必每次添加新的状态变量时更新辅助方法。 – ateiob 2012-08-10 15:22:22

13

SharedPreferences被序列化为XML,这就是为什么您只能使用简单类型。您必须自己将该包转换为单独的SharePreferences属性,或者将该包以其他方式序列化到磁盘。

这里的讨论Android中存储数据的各种可能性有很好的参考文献:http://developer.android.com/guide/topics/data/data-storage.html

+5

+1用于解释原因*为什么* SharedPreferences仅支持简单类型。 – ateiob 2012-08-10 15:12:43