如何从共享首选项

时间:2017-07-25 14:38:57

标签: android sharedpreferences

使用SharedPreferences存储值列表。我需要的是从SharedPreference中删除特定值.Below是我用来删除的代码。但它不起作用。

 prefs= DetailActivity.this.getSharedPreferences("itemFKID",Context.MODE_PRIVATE);
                        edit=prefs.edit();
                        //edit.clear();
                        edit.remove(itemFkId);
                        edit.commit();

下面是即使在edit.remove()编译后仍包含值的屏幕截图。 Debugging Image

这里是将值插入SharedPreferences

prefs= DetailActivity.this.getSharedPreferences("itemFKID",Context.MODE_PRIVATE);
                edit=prefs.edit();

                for (int i = 0; i < Config.favouritesList.size(); i++) {
                    edit.putString("itemFKIDValue" +i, Config.favouritesList.get(i));
                }
                edit.putInt("itemFKIDLength", Config.favouritesList.size());
                edit.commit();

2 个答案:

答案 0 :(得分:1)

SharedPreferences.Editor的文档有两位与您的问题相关:

  

您在编辑器中所做的所有更改都是批处理的,在您调用commit()或apply()

之前不会将其复制回原始的SharedPreferences

  

当提交回首选项时,无论您是否在此编辑器上的put方法之前或之后调用remove,都会先执行所有删除操作

因此,在看到删除的值之前,您必须跳过commit()调用。

答案 1 :(得分:1)

终于找到了错误。传入remove()的密钥错误。我使用edit.remove(itemFkID)而不是edit.remove(itemFKIDValue)。谢谢你的时间。