getBoolean 不会接受带有 getSharedPreferences 的字符串键

getBoolean won't accept string key with getSharedPreferences

这可能是 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

它指出:"getBoolean(java.lang.String, Boolean) in SharedPreferences cannot be applied to (int, Boolean)"

在我的 strings.xml 中,我的值是:

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

当我简单地将行更改为

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

效果很好

为什么 strings.xml 中的字符串处理方式不同?

谢谢!

Android Studio doesn't like my use of R.string.Chri in Boolean textData = prefs.getBoolean(R.string.Chri, false);

正确。 R.string.Chri 是一个 int。要获取字符串,请在某些 Context 上调用 getString(R.string.Chri),例如您的 activity.

你应该使用:

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

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