Android:Unbale在SharedPreferences中保存布尔值

时间:2015-07-31 16:06:46

标签: android boolean sharedpreferences

嘿伙计我无法使用SharedPreferences保存布尔值。由于某些原因,该值始终为真。以下是我保存值的方法:

public static void setSharedPreference(Context ctx, String keyValue, boolean value){
    SharedPreferences sp = ctx.getSharedPreferences(Constants._preferencesName, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    editor.putBoolean(keyValue,value);
    editor.commit();
}

这就是我得到它的方式:

 public static boolean getBooleanPreference(Context ctx, String keyValue){
    boolean prefValue;
    SharedPreferences sp = ctx.getSharedPreferences(Constants._preferencesName, ctx.MODE_PRIVATE);
    prefValue = sp.getBoolean(keyValue, false);

    return prefValue;
}

有什么问题?!

2 个答案:

答案 0 :(得分:2)

你的代码在语法上是正确的,但是我怀疑你在保存时传递的不同Context比从prefs读取时传递的要多this。这将导致访问不同的共享首选项存储。如果您正在进行写入和读取不同的活动并决定将getApplicationContext()作为上下文传递,则这尤其容易踩到。除非有理由这样做,否则您很可能希望从应用中的任何位置获得您的偏好,然后使用始终的应用程序上下文(dev_root/ \__ common/ \__ inc/ \__ src/ \__ CMakeLists.txt \__ project1/ \__ inc/ \__ src/ \__ CMakeLists.txt \__ project2/ \__ inc/ \__ src/ \__ CMakeLists.txt )。

答案 1 :(得分:0)

代码中的所有内容都是正确的。

ONLY 错误的可能性是您调用这些方法时。在放置和检索数据时请使用getApplicationContext()

请为应用做一个“清除数据”,然后从干净的SharedPreference开始。