2017-07-25 104 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