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)
来检索字符串。
这可能是 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)
来检索字符串。