【问题标题】:getBoolean won't accept string key with getSharedPreferencesgetBoolean 不接受带有 getSharedPreferences 的字符串键
【发布时间】:2015-01-03 21:07:18
【问题描述】:

这可能是 Android 101,但我现在已经习惯了 SDK。无论如何,我根本不明白这个错误。我想根据我的共享首选项文件更新一些复选框选择,我正在使用以下方法:

private void updatePreferencesData() {

    SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);

    Boolean textData = prefs.getBoolean(R.string.Chri, false);
    CheckBox cb1 = (CheckBox) findViewById(R.id.chkbxChristmas);
    cb1.setChecked(textData);

}

Android Studio 不喜欢我在 Boolean textData = prefs.getBoolean(R.string.Chri, false); 中使用 R.string.Chri;

它指出:“SharedPreferences 中的 getBoolean(java.lang.String, Boolean) 不能应用于 (int, Boolean)”

在我的 strings.xml 中我有值:

<string name="Chri">Christmas</string>

当我简单地将行更改为

 Boolean textData = prefs.getBoolean("Christmas", false);

效果很好

strings.xml 中的字符串的处理方式有何不同?

谢谢!

【问题讨论】:

    标签: java android boolean sharedpreferences


    【解决方案1】:

    Android Studio 不喜欢我在 Boolean textData = prefs.getBoolean(R.string.Chri, false); 中使用 R.string.Chri;

    正确。 R.string.Chriint。要获取字符串,请在某些Context 上调用getString(R.string.Chri),例如您的活动。

    【讨论】:

    • 如此简单!谢谢。
    【解决方案2】:

    你应该使用:

     prefs.getBoolean(this.getResources().getString(R.string.Chri), false);
    

    【讨论】:

      【解决方案3】:

      R.string.Chri 是一个整数。而是使用getResources().getString(R.string.Chri) 来检索字符串。

      【讨论】:

        猜你喜欢
        • 2019-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多