将整个Bundle保存到SharedPreferences

时间:2012-08-10 14:25:11

标签: android bundle sharedpreferences

假设我的方法已经传递Bundle已经填充了要保存的数据,有没有办法将其保存到SharedPreferences 而不将其分开到整数,花车,弦乐等?

我更喜欢“一举”编写/提交所有内容的便利性,所以如果使用SharedPreferences无法做到这一点,您会推荐其他persistent存储方法吗?

3 个答案:

答案 0 :(得分:14)

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

这是一篇很好的参考文档,讨论了在Android中存储数据的各种可能性:http://developer.android.com/guide/topics/data/data-storage.html

答案 1 :(得分:6)

据我所知,您只能将原始数据(及其包装器)保存到SharedPreferences

为什么不创建自己的帮助器方法,它将遍历Bundle并将所有值保存到SharedPreferences?

答案 2 :(得分:0)

  • 注意:如果您在项目中使用 Gson,那么我认为这是一个更好的解决方案。

我只是使用 Gson 中的 Google 将指定的对象序列化为其等效的 JSON 表示:

<块引用>

使用这个依赖

implementation 'com.google.code.gson:gson:2.8.6'
<块引用>

代码:

Gson gson = new Gson();
String dataToJson = gson.toJson(modelObj);

然后我将 dataToJson 作为字符串存储在 SharedPreferences.Simple 中!

<块引用>

提取字符串时:

String myStoredVal = Value stored in SharedPreference. 
GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();

Gson gson = builder.create();
MyModel modelObj = gson.fromJson(prodDataStr, MyModel.class);