Android:将字符串写入SharedPreferences不起作用

时间:2015-02-25 16:32:16

标签: android json hashmap sharedpreferences

我想将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时会发生一些事情。但我无法弄清楚那里有什么问题。

3 个答案:

答案 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();