我在我的sharedPrefs中有一組字符串。我想刪除列表中的特定項目從SharedPreferences中刪除特定項目
<set name="items">
<string>217372223</string>
<string>222015066</string>
<string>217771052</string>
<string>220431322</string>
所以我想刪除說,217372223,但保留其餘?
我在我的sharedPrefs中有一組字符串。我想刪除列表中的特定項目從SharedPreferences中刪除特定項目
<set name="items">
<string>217372223</string>
<string>222015066</string>
<string>217771052</string>
<string>220431322</string>
所以我想刪除說,217372223,但保留其餘?
SharedPreferences sharedPreferences = context.getSharedPreferences("items", Context.MODE_PRIVATE);
sharedPreferences.edit().remove(String key).commit();
的remove(String key)
方法確保您的項目有一個鍵。嘗試是這樣的:
<string name="keyToDelete">217372223</string>
然後
sharedPreferences.edit().remove("keyToDelete").commit();
/**
* Deletes a particular value or FULL Set from shared preferences.
*
* @param key
*/
public static void deleteValueInPreferences(Context context, String key) {
SharedPreferences sp = context.getSharedPreferences(SHARED_PREF_FILE_NAME, MODE_PRIVATE);
if (sp.contains(key)) {
sp.edit().remove(key).apply();
}
}
/**
* Deletes a particular value in Set from shared preferences.
*
* @param key
*/
public static void deleteSingleValueInSetInPreferences(Context context, String key, String value) {
Set<String> aSetOfExistingStrings = getStringArrayFromPreferences(context, key);
deleteValueInPreferences(context, key);
Set<String> aNewSetOfExistingStrings = new HashSet<String>();
aNewSetOfExistingStrings.addAll(aSetOfExistingStrings);
aNewSetOfExistingStrings.remove(value);
setStringArrayIntoPreferences(context, key, aNewSetOfExistingStrings);
}
/**
* @param context
* @param key - Set Key
* @param keyValueMap - Set Key List
*/
public static void setStringArrayIntoPreferences(Context context, String key, Set<String> keyValueMap) {
SharedPreferences sp = context.getSharedPreferences(SHARED_PREF_FILE_NAME, MODE_PRIVATE);
for (String s : keyValueMap) {
}
sp.edit().putStringSet(key, keyValueMap).apply();
}
我這是怎麼了進來,我遇到的問題。我從SharedPrefs複製Set,刪除了我想刪除的項目,從SharedPrefs中刪除整個集合,然後重新添加集合減去我想刪除的項目。
如果我使用 preferences.edit()。remove(「items」)。commit(); 這會刪除整個列表嗎? – x10sion
@ x10sion在這種情況下,最好使用'clear()',它將刪除** all **首選項。 – user1301428
爲什麼在上面的例子中使用「String key」? – x10sion