我想将HashMap转换为JSON,因此我可以将其作为字符串写入我的应用程序共享首选项。
所以这就是我到目前为止所得到的:
HashMap<String, String> colorHashMap = new HashMap<String, String>();
colorHashMap.put("test", "test");
colorHashMap.put("ROT","#FF0000");
JSONObject colorHashMapJasonObj = new JSONObject(colorHashMap);
String JSONString = String.valueOf(colorHashMapJasonObj);
Log.v("JSON: ", JSONString);
editor.putString("standard_colors_JSON", String.valueOf(colorHashMapJasonObj));
String JSONcolorStringFromSP = prefs.getString("standard_colors_JSON", "nothting");
Log.v("JSONcolorStringFromSP: ", JSONcolorStringFromSP);
在JSONString
我得到了正确的值。但在JSONcolorStringFromSP
我只得到标准值。所以当我尝试将String写入SharedPreferences时会发生一些事情。但我无法弄清楚那里有什么问题。
答案 0 :(得分:1)
您错过了apply()
还是commit()
?你的SharedPreferences
实例在哪里?这是一个完整的例子:
SharedPreferences prefs = ...;
prefs.edit().putString("somekey", "somevalue").apply();
答案 1 :(得分:1)
在放入一些数据后你必须调用commit() 例如:
editor.putString("standard_colors_JSON", String.valueOf(colorHashMapJasonObj)).commit();
答案 2 :(得分:1)
所有SharedPreferences编辑必须在实际保存之前使用.commit()
进行调用。像这样:
SharedPreferences.Editor editor = GaggleApplication.getInstance().getSharedPreferences(PREFERENCE_FILE, 0).edit();
editor.putString(name, value);
editor.commit();