我有这段代码,每次加载片段时都会运行
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();
}
谁能帮我弄清楚我在这里做错了什么?
如果您需要发布任何其他内容,请告诉我。