getBoolean不接受使用getSharedPreferences的字符串键

时间:2015-01-03 21:07:19

标签: java android boolean sharedpreferences

这可能是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不喜欢我在布尔文本中使用R.string.Chri textData = prefs.getBoolean(R.string.Chri,false);

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

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

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

当我只是将行更改为

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

工作正常

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

谢谢!

3 个答案:

答案 0 :(得分:3)

  

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

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

答案 1 :(得分:2)

您应该使用:

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

答案 2 :(得分:2)

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