【问题标题】:Please help me understand one part of reading a preference请帮助我理解阅读偏好的一部分
【发布时间】:2014-01-24 15:28:35
【问题描述】:

所以我对 java/android 还是有点陌生​​,我正在尝试读取一个偏好值,但我正在尝试理解它的每个部分,所以它对我来说更有意义......

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
boolean soundEnabledPref = sharedPref.getBoolean("sound", soundEnabled);

在 getBoolean 中,我试图了解第一个字符串是“声音”,以及 soundEnabled 布尔值的用途。

所以我已将 soundEnabled 声明为布尔值,我猜这是存储我正在检索的值的内容?

第一个字符串“sound”的目的是什么?如果它用于存储某些东西,或者如果我用它引用某些东西,那么我想确保我正确命名它,那么我可能需要给它命名不同的东西。

我已经阅读了开发人员文档,但仍然有点困惑,所以如果有人能给我一个更详细的快速解释,我将不胜感激!

【问题讨论】:

    标签: java android boolean preferences


    【解决方案1】:
    • “声音”是您在其下寻找价值的关键
    • soundEnabled 是一个布尔变量,它有一些值——真或假;如果没有“声音”键,此值将用作 soundEnabledPref 的默认值;也可以这样写:

      boolean soundEnabledPref = sharedPref.getBoolean("sound", true);
      

      如果没有“sound”键,soundEnabledPref 将采用默认值 true

    键的一个好习惯是使用常量 - 您将在以后避免简单的拼写错误,例如:

    public static final String KEY_SOUND = "sound";
    

    然后

    boolean soundEnabledPref = sharedPref.getBoolean(ClassNameWhereItsDefined.KEY_SOUND, true);
    

    【讨论】:

    • 所以要明确一点,如果我将 android:key 设置为 pref_sounds 的首选项,那我会放在我目前有“声音”的地方吗?然后第二个值是默认值,以防从首选项中找不到值?
    • 是的,例如,如果在 strings.xml 中,你有 ​​pref_sound 然后在偏好设置 android:key="@string/pref_sound",你可以在这里使用它: boolean soundEnabledPref = sharedPref.getBoolean(getString(R.string.pref_sound), true);
    【解决方案2】:

    “声音”是与您的SharedPreferences 中存储的值对应的键。

    docs 中也对此进行了描述。

    简单来说,您可以将其视为一个变量,它会保存一个值。

    【讨论】:

      【解决方案3】:

      共享首选项使用字典概念它键,值对作为字典它将任何带有字符串和值的键保存为对象共享首选项是安全类型,当你想保存整数时,你使用方法 putInt 或 putBoolean 来保存布尔值,当你检索from shared preference 在它为你转换值之后也会为你返回强类型,

      希望对你有帮助

      【讨论】:

        【解决方案4】:

        您可以在共享首选项中存储多个内容,因此您可以使用键来确定要设置的值以及以后要检索的值。

        在这种情况下,sound 是您的密钥。

        在您的应用程序中的某个时刻,您调用了SharedPreferences.Editor.putBoolean("sound", myBoolean);

        稍后在您的应用程序中调用SharedPreferences.getBoolean("sound", defaultBoolean); 以找出myBoolean 的值是什么。在此调用中,defaultBoolean 只是您希望获得的默认值,如果您有任何机会从未调用过SharedPreferences.Editor.putBoolean,因此"sound" 的值不存在。

        【讨论】:

          猜你喜欢
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-29
          • 2013-05-06
          • 1970-01-01
          • 2021-12-01
          相关资源
          最近更新 更多