2

我有这段代码,每次加载片段时都会运行

Log.d("SP::getAll", sp.getAll().toString());
sp.storeValue(SP.STRING, KEY_TYPESANDCLASSES, s, TimeHelper.YEAR);
Log.d("SP::getAll", sp.getAll().toString());

输出总是第一个日志为空,第二个包含值,即使我简单地重新加载片段。

我不确定我做错了什么,我没有使用 SharedPreferences 的经验。

在基础活动中

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    sp = new SP(this);
    ...
}

public SP getSP() {
    return sp;
}

SP.java

public SP(Context ctx) {
    sp = ctx.getSharedPreferences("Prefs", Context.MODE_PRIVATE);
}

public void storeValue(int type, String key, Object value, Long cacheTime) {
    spe = sp.edit();
    switch (type) {
        case BOOLEAN:
            spe.putBoolean(key, (Boolean) value);
            break;
        case STRING:
            spe.putString(key, (String) value);
            break;
        case LONG:
            spe.putLong(key, (Long) value);
        case INTEGER:
            spe.putInt(key, (Integer) value);
            break;
        case FLOAT:
            spe.putFloat(key, (Float) value);
            break;
    }


    if (cacheTime != null) {
        spe.putLong(key+TIME_KEY, cacheTime);
    }
    spe.commit();
}

public Map<String, ?> getAll() {
    return sp.getAll();
}

谁能帮我弄清楚我在这里做错了什么?

如果您需要发布任何其他内容,请告诉我。

4

1 回答 1

2

我的错误是,当我早些时候调试某些东西时,我正在清除代码顶部的首选项,而在此之前忘记删除清除。

于 2013-10-28T12:32:52.927 回答