2017-07-25 71 views
0

是使用SharedPreferences存储值列表。我需要的是从SharedPreferences.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(); 
+0

您是否尝试从列表或整个列表中删除项目? – Derek

+0

试图从列表中删除一个项目 – Siva

+0

您需要先获取您的hashMap,从中删除该id,然后重新保存新的地图。 – Derek

回答

1

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

1

SharedPreferences.Editor文档有两位是有关你的问题:

在编辑器中,你做的所有更改分批,并在调用commit()或apply()之前不会复制回原始的SharedPreferences

而且

提交回喜好的时候,所有的清除首先完成的,无论你之前或在此编辑器

这样就把方法后调用删除您就必须跨过在您看到该值被删除之前调用commit()

+0

谢谢。现在我已经更新了我的屏幕截图Image ..仍然有问题发生。@ Ben P. – Siva

+0

您可以将代码插入到您的SharedPreferences中的位置吗? –

+0

我在问题中添加了 – Siva