【问题标题】:How to remove Specific values from Shared Preference如何从共享首选项中删除特定值
【发布时间】:2017-07-25 14:38:56
【问题描述】:

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

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

以下是即使在 edit.remove() 编译后也包含值的屏幕截图。

这里将值插入 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();

【问题讨论】:

  • 您是要从列表还是整个列表中删除和项目?
  • 试图从列表中删除一个项目
  • 您需要先获取您的 hashMap,从中删除 id,然后重新保存新地图。
  • 你能帮我写代码吗?

标签: android sharedpreferences


【解决方案1】:

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

您在编辑器中所做的所有更改都是批处理的,并且在您调用 commit() 或 apply() 之前不会复制回原始 SharedPreferences

和

提交回首选项时,首先完成所有删除,无论您是在此编辑器上的 put 方法之前还是之后调用 remove

因此,您必须先跳过 commit() 调用,然后才能看到删除的值。

【讨论】:

  • 谢谢。现在我已经更新了我的截图图像.. 问题仍然存在。@Ben P.
  • 您可以发布将项目插入 SharedPreferences 的代码吗?
  • 我已经在qustion中添加了
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2013-03-23
    • 2020-11-28
    • 1970-01-01
    相关资源
    最近更新 更多