我的Android SharedPreferences是:
键,值
JHON,USA
xxxpeter,UK
路易斯,MEX
xxxangel,ITAL
杜邦,呋喃
xxxcharles,次季
...
xxxname
更多行...
如何在密钥中删除包含(或启动)xxx的键/值。这是我到目前为止所得到的:
public void Deletekeyxxx() {
final SharedPreferences.Editor sped = sharedPreferences.edit();
if(sped.contains("xxx")){
sped.remove(sped.contains("xxx"));
}
sped.commit();
}
作品!谢谢Ben P。
public void Deletekeyxxx() {
final SharedPreferences.Editor sharedPrefsEditor = sharedPreferences.edit();
Map<String, ?> allEntries = sharedPreferences.getAll();
for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
String key = entry.getKey();
if (key.contains("xxx")) {
sharedPrefsEditor.remove(key);
}
sharedPrefsEditor.commit();
}
}
答案 0 :(得分:1)
您可以使用以下行直接删除键值,无需进行字符串检查
..
答案 1 :(得分:1)
您可以使用sharedPreferences.getAll()
获取共享首选项上的所有键/值引用,然后遍历它们并删除您想要的那些。
SharedPreferences.Editor editor = sharedPreferences.edit();
Map<String, ?> allEntries = sharedPreferences.getAll();
for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
String key = entry.getKey();
if (key.contains("xxx")) {
editor.remove(key);
}
editor.commit();
}
答案 2 :(得分:0)
您可以使用SharedPreferences.getAll()
检索Map<String,?>
,然后使用Map.keySet()
迭代密钥。也许是这样的:
private void removeBadKeys() {
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
SharedPreferences.Editor editor = preferences.edit();
for (String key : preferences.getAll().keySet()) {
if (key.startsWith("xxx")) {
editor.remove(key);
}
}
editor.commit();
}