获取 PreferenceManager 以检索 DefaultSharedPreferences
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
黄金法则:您使用 SharedPreference.Editor 对象能够写入 SharedPreference。
让我们找回它
SharedPreference.Editor editor = prefs.edit();
在 SharedPreferences 中添加一个新的布尔值
editor.putBoolean("ACHIEVEMENT_NAME", true);
完成后提交更改。
editor.commit();
最后一步非常重要,否则您将丢失更改。
一点额外的:
如果您不想要另一个对象,而更喜欢另一种类似的方法:
prefs.edit().putBoolean("ACHIEVMENT_NAME", true).commit();
prefs.edit().putBoolean("ACHIEVMENT_NAME_2", true).commit();
这种方式你必须在每次插入值时提交,因为没有处理插入的对象。
prefs.edit().putBoolean("ACHIEVMENT_NAME", true);
prefs.edit().putBoolean("ACHIEVMENT_NAME_2", true).commit();
最后一个示例将仅插入 ACHIEVMENT_NAME_2。当心!
获取布尔值
boolean myBoolean = prefs.getBoolean(name, defaultValue);
现在这个:name 是您在插入值时使用的字符串(因此在上面的示例中,它是 ACHIEVMENT_NAME 或 ACHIEVMENT_NAME_2 )。
如果没有找到给定名称的值,getBoolean 方法将返回您指定的 defaultValue
例子:
boolean myBoolean = prefs.getBoolean("ACHIEVMENT_NAME", false);
//ACHIEVMENT_NAME exists, myBoolean gets ACHIEVMENT_NAME's value
boolean myNotFoundBoolean = prefs.getBoolean("ACHIEVMENT_NAME_3", false);
//ACHIEVMENT_NAME_3 does NOT exists, myNotFoundBoolean is false
boolean lastBooleanExample = prefs.getBoolean("ACHIEVMENT_NAME_4", true);
//ACHIEVMENT_NAME_4 does NOT exists, lastBooleanExample is true
在其他一些情况下,您可能只需要检查是否设置了某个值,而不是检查存储的值类型。
例如,您可能只需要检查一个名为“GAME_COMPLETED”的值,它甚至可能是一个表示游戏完成次数的值,但一旦完成至少 1 次,您就可以解锁一个新的游戏模式。
在这种情况下,您只需要检查 prefs 是否具有 GAME_COMPLETED 值
if (prefs.contains("GAME_COMPLETED")) {
...
}
这里有很多幻想,希望能给你一个想法。
清除所有偏好
editor.clear();
editor.commit();
同时删除某一个
editor.remove("GAME_COMPLETED");
editor.commit();
更多(还有更多吗?似乎我解释了几乎所有xD)在这里:
http://developer.android.com/reference/android/content/SharedPreferences.html