Android中的SharedPreferences保存/加载问题

时间:2015-11-04 12:41:41

标签: android sharedpreferences android-sharedpreferences

抱歉,如果这是一个愚蠢的问题。我正在学习使用SharedPreferences,我遇到了一些问题: 我正在使用此代码保存到SharedPreferences:

public void saveInMemory(String[] saveThis){
    StringBuilder sb = new StringBuilder();
    prefs = PreferenceManager.getDefaultSharedPreferences(OIBListActivity.this);
    editor = prefs.edit();
    for (int i = 0; i < saveThis.length; i++) {
        sb.append(saveThis[i]);
        sb.append(";");
    }
    editor.putString("listaOIB", sb.toString());
    editor.commit();
}

此代码加载已保存的值:

public String loadFromMemory(String id){
    prefs = PreferenceManager.getDefaultSharedPreferences(OIBListActivity.this);
    return prefs.getString(id, "NOPREFSAVED");
}

我已经在外面声明了prefs和编辑器,所以这不应该是一个问题:

private SharedPreferences prefs;
private SharedPreferences.Editor editor;

现在,我的问题是,当我输入此活动并保存我从其他活动收到的文件时(通过putExtra,如果有帮助),然后继续加载它一切正常。 然后我重新输入我的活动而不向其发送任何文件(来自其他活动)并尝试使用 loadFromMemory()并且它不起作用。我的理解是它本应保存我第一次输入Activity时的文件,然后在我想要的时候加载它。

任何帮助?

2 个答案:

答案 0 :(得分:0)

添加方法并在添加时调用,其他在您获取时调用

//添加数据时调用此方法

    public static void setAlarmHourTime(String value, Activity activity) {
    SharedPreferences.Editor pref = activity.getSharedPreferences("ALARMHOURTIME", Context.MODE_PRIVATE).edit();
    pref.putString("alarmhourtime", value);
    pref.commit();
}

//在您检索数据时调用此方法

public static String getAlarmHourTime(Activity activity) {
    SharedPreferences prefs = activity.getSharedPreferences("ALARMHOURTIME", Context.MODE_PRIVATE);
    return prefs.getString("alarmhourtime","7");

}

答案 1 :(得分:0)

如果您要检索editor.putString("listaOIB", sb.toString());中保存的内容,则您在loadFromMemory中传递的ID应为&#34; listaOIB&#34;。 是这样的吗?