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

标签 android key sharedpreferences

我的 Android SharedPreferences 是:

键,值

约翰,美国

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();
 }

有效!谢谢本 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/54063948/

相关文章:

Android 模拟 gps 供应商

android - 通过 SIP/VoIP 为 Android 应用程序提供蓝牙 HFP 支持

javascript - 如何获取每个对象键的 id

android - 处理 appwidget 的多个实例

android - 加密我的 SharedPreference

android - flutter "this function has a return type of void and cannot be used"

android.os.FileUriExposedException : file. jpg 通过 ClipData.Item.getUri() 暴露在应用程序之外

redis - 如何在Redis中添加条件(过滤器)

Perl 哈希值 : $hash{key} vs $hash->{key}

java - 如何保存最后一个 fragment ?