android - 如何从 SharedPreferences 中删除一些包含字符串的键?

标签 android key sharedpreferences

我的 Android SharedPreferences 是:

核心值(value)

美国约翰

xxxpeter,英国

路易斯,墨西哥

xxxangel,意大利

杜邦,法兰

xxx查尔斯,比利时

...

更多带有 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();
    }
}

最佳答案

您可以使用 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();
}

关于android - 如何从 SharedPreferences 中删除一些包含字符串的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45620473/

相关文章:

perl - 在 Perl 中从 2D 哈希中删除键

Python 从字典列表中为每个具有特定键的字典创建列表

android - 共享首选项不读取按钮状态

Android:无法从 settings.xml 获取首选项值

android - android访问下一个按钮事件

android - "onDialogClosed"有什么例子吗?

Android 自定义通知 setOnClickPendingIntent 不适用于低于 3.0 的版本。有办法让它发挥作用吗?

java - 从 Android 中使用 Google Mirror API 附加图像不起作用

javascript - 在 React Native 中,如何在 iOS 中将 KeyboardAvoidingView 与 Modal 一起使用?

android - fragment onResume() 和 backStack 问题