嘿伙计我无法使用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;
}
有什么问题?!
答案 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开始。