我有这个代码,每次加载片段时运行
Log.d("SP::getAll", sp.getAll().toString());
sp.storeValue(SP.STRING, KEY_TYPESANDCLASSES, s, TimeHelper.YEAR);
Log.d("SP::getAll", sp.getAll().toString());
输出总是第一个log为空,第二个包含值,即使我简单地重新加载片段。
我不确定我的错误,我对使用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();
}
任何人都可以帮我弄清楚我在这里遇到了什么问题吗?
如果您需要任何其他信息,请告诉我。
答案 0 :(得分:1)
我的错误是当我之前调试某些内容时,我正在清除代码顶部的首选项,并忘记在此之前删除清除。