java - Sharedpreferences 保存后返回空值

标签 java android

我有一个带有两个单选按钮的单选按钮。我想选择一个单选按钮并点击保存,这样当我返回时,相同的单选按钮就会被选中。问题是,即使在我点击保存 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/

相关文章:

java - instanceof 返回 true 后怎么可能有 ClassCastException

安卓。 SQLite 异常 : no such column _id

android - 在android中扫描不同的内存类型

android - JNI 错误(应用程序错误): local reference table overflow (max=512) even with out Native Code

java - 保存 boolean 值并在 Activity 中使用它

php - 服务器添加或更新记录时如何同步应用程序数据

java - MongoDB 数据模型支持每个事件、每个日期范围的唯一访问者

Java在int末尾添加000

java - 通过WebSphere 8.5 wsadmin安装EAR文件

java - 如何使用 lambda 获取 HashMap 中值的键数