2012-08-10 20 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