7

假设我的一个方法被传递了一个已经填充了要保存的数据的Bundle,有没有办法将它保存到SharedPreferences 而无需将其拆分为整数、浮点数、字符串等?

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

4

3 回答 3

14

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

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

于 2012-08-10T14:38:34.507 回答
6

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

为什么不创建自己的辅助方法,该方法将遍历 Bundle 并将其中的所有值保存到 SharedPreferences?

于 2012-08-10T14:31:37.043 回答
0
  • 注意:如果您在项目中使用 Gson,那么我认为这是一个更好的解决方案。

我只是使用GsonfromGoogle将指定的对象序列化为其等效的 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);
于 2021-02-11T10:39:52.657 回答