布尔共享首选项

时间:2015-02-03 16:57:16

标签: android eclipse sharedpreferences

我的应用正在运行。现在我的问题是如何在共享偏好上传输它?我有achievement class。第一个成就是“玩第一场比赛”所以我所做的就是。每当玩家点击play button然后我在我的成就等级上调用它时,我设置一个布尔值,如果它是真的,那么我将我的imageview.setvisibility(View.VISIBLE)。我该如何使用共享偏好?我糊涂了。请道歉

1 个答案:

答案 0 :(得分:0)

获取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是您在插入值时使用的String(因此在上面的示例中,它是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"的值?这甚至可能是说游戏完成次数的价值,但是一旦完成至少一次,你就可以解锁一个新的游戏模式。

在这种情况下,您只需要检查prefs是否具有GAME_COMPLETED值

if (prefs.contains("GAME_COMPLETED")) {
 ...
}

这里有很多幻想,希望能给你一个想法。

清除所有偏好

editor.clear();
editor.commit();

同时删除某个

editor.remove("GAME_COMPLETED");
editor.commit();

更多(还有吗?似乎我在这里解释了几乎所有的东西):

http://developer.android.com/reference/android/content/SharedPreferences.html