【问题标题】:Boolean Shared Preference布尔共享首选项
【发布时间】:2015-02-03 16:57:16
【问题描述】:

我的应用程序正在运行。现在我的问题是如何将它转移到 sharedpreference 上?我有一个achievement class。第一个成就是“玩第一场比赛”,所以我要做的是。每当玩家点击play button 时,我都会设置一个布尔值,然后我在我的成就类上调用它,如果它是真的,那么我会创建我的 imageview.setvisibility(View.VISIBLE)。我该如何使用 sharedpreference 呢?我很困惑。并请道歉

【问题讨论】:

标签: android eclipse sharedpreferences


【解决方案1】:

获取 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

【讨论】:

  • 先生,我需要制作一个xml文件吗?
  • 不,XML 文件由这些 API 调用自动创建(和管理)
  • 如何获取布尔值?
  • 它对您有任何帮助吗?你能考虑接受我的回答吗?
猜你喜欢
  • 2017-10-28
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 2012-08-04
  • 2020-08-12
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多