我有一个带有两个单选按钮的单选按钮。我想选择一个单选按钮并点击保存,这样当我返回时,相同的单选按钮就会被选中。问题是,即使在我点击保存 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。
最佳答案
在需要时调用这些函数:
private void savePreferences(String key, String value){
SharedPreferences sharedPreferences = getSharedPreferences("weightSetting", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
private String loadPreferences(String key){
SharedPreferences sharedPreferences = getSharedPreferences("weightSetting", MODE_PRIVATE);
String load = sharedPreferences.getString(key, "");
return load;
}
}
例如:
savePreferences("selected", "lb");
和
String s = loadPreferences("selected);
关于java - Sharedpreferences 保存后返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33063248/