0

对不起,如果这是一个愚蠢的问题。我正在学习使用 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");
}

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

private SharedPreferences prefs;
private SharedPreferences.Editor editor;

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

有什么帮助吗?

4

2 回答 2

0

如果你想检索保存在 中的内容editor.putString("listaOIB", sb.toString());,那么你传入的 idloadFromMemory应该是“listaOIB”。是这样吗?

于 2015-11-04T13:03:56.870 回答
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");

}
于 2015-11-04T12:45:56.103 回答