【发布时间】:2015-10-11 09:03:02
【问题描述】:
我有一个带有两个单选按钮的单选组。我想选择一个单选按钮并点击保存,这样当我返回时,同一个单选按钮就会被选中。问题是,即使在我点击保存 onCreate 中的 sharedpreferences 后,它也总是返回 null。我知道保存功能正在执行,因为 toast 运行并且我在控制台中打印了 System.out.println。
public void saveSettings(View view)
{
Toast.makeText(getApplicationContext(), "Settings Saved", Toast.LENGTH_LONG).show();
//DETERMINE WHICH RADIO BUTTON IS SELECTED
RadioButton lbSetting = (RadioButton)findViewById(R.id.weightSettingLB);
RadioButton kgSetting = (RadioButton)findViewById(R.id.weightSettingKG);
if(lbSetting.isChecked())
{
weightSetting = "lb";
}
if(kgSetting.isChecked())
{
weightSetting = "kg";
}
System.out.println("The " + weightSetting + " radio button has been selected.");
//SAVE WEIGHT SETTING BETWEEN LB/KG
settingsPrefString = getSharedPreferences(weightSetting, 0);
SharedPreferences.Editor editor = settingsPrefString.edit();
editor.putString("weightSetting", weightSetting);
editor.commit();
}
在我的 onCreate 中,我尝试将保存的数据检索为
if(settingsPrefString != null)
{
weightSetting = settingsPrefString.getString("weightSetting", "Couldn't load data!");
}
if(settingsPrefString == null)
{
System.out.println("settingsPrefString is NULL!");
}
即使在我点击保存后,sharedpreferences 也总是返回为 null。
【问题讨论】:
-
getSharedPreferences()方法中的第一个参数是您要访问的首选项文件的名称。使其保持不变 - 例如,"weight_settings"- 而不是weightSetting变量的变化值。 -
你能在 onCreate 中添加如何初始化 settingsPrefString
-
public SharedPreferences settingsPrefString;就在 onCreate 方法的上方
-
不声明...我说的是初始化你是在做 settingsPrefString = getSharedPreference(.. inside onCreate....如果没有那么你的 settingsPrefString 将为空......