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