假设我的方法已经传递Bundle已经填充了要保存的数据,有没有办法将其保存到SharedPreferences 而不将其分开到整数,花车,弦乐等?
我更喜欢“一举”编写/提交所有内容的便利性,所以如果使用SharedPreferences无法做到这一点,您会推荐其他persistent存储方法吗?
答案 0 :(得分:14)
SharedPreferences被序列化为XML,这就是为什么你只能使用简单类型。您要么必须将捆绑包自己转换为单独的SharePreferences属性,要么将捆绑包以其他方式序列化到磁盘。
这是一篇很好的参考文档,讨论了在Android中存储数据的各种可能性:http://developer.android.com/guide/topics/data/data-storage.html
答案 1 :(得分:6)
据我所知,您只能将原始数据(及其包装器)保存到SharedPreferences
为什么不创建自己的帮助器方法,它将遍历Bundle并将所有值保存到SharedPreferences?
答案 2 :(得分:0)
我只是使用 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);