3

我通过以下方式创建了一个 HashMap:

HashMap<Integer, String> buttons = new HashMap<Integer, String>();

我需要保持这种格式,但是我看到的这个解决方案的每个答案都只适用于HashMap<String, String>

谢谢

4

3 回答 3

14

嘿,我最终找到了一个方法:)

我刚刚更改了必须格式化的 HashMap,然后执行以下操作来保存内容:

SharedPreferences.Editor editor = getSharedPreferences(PREFS_NAME, 0).edit();
for( Entry entry : backUpCurency_values.entrySet() ) 
editor.putString( entry.getKey(), entry.getValue() );
editor.commit();

和以下检索HashpMap:

SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
for( Entry entry : prefs.getAll().entrySet() )
   backUpCurency_values.put( entry.getKey(), entry.getValue().toString() );
于 2013-02-13T15:34:02.873 回答
5

不支持任何HashMapin SharedPreferences。您可以将整体SharedPreferences视为有点像 a HashMap,但它不是 a HashMap,并且您不能将 a 存储HashMap在个人偏好中。

欢迎您将您的HashMap转换为String可以存储在值中的SharedPreferences值,例如将其转换为 JSON。

于 2013-02-13T00:48:15.987 回答
0

将其转换为 JSON(正如 CommonsWare 指出的那样)是一种选择。或者,我这样做的方式(因为我不熟悉 JSON)是使用 Apache 的 ObjectSerializer 类(在此处找到:ObjectSerializer.java)对其进行序列化。

当你想存储它时只需调用 serialize 方法,当你想将它转回 Map 时只需反序列化。

于 2013-02-13T01:50:03.787 回答