【问题标题】:How to remove some key contain a string from SharedPreferences?如何从 SharedPreferences 中删除一些包含字符串的键?
【发布时间】:2017-08-10 17:54:21
【问题描述】:

我的 Android SharedPreferences 是:

键,值

约翰,美国

xxxpeter,英国

路易斯,墨西哥

xxxangel,斜体

杜邦,弗兰

xxxcharles,比利时

...

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

【问题讨论】:

  • 保持简单,遍历首选项中所有存在的键,如果它包含/以您的搜索键开始则删除

标签: android key sharedpreferences


【解决方案1】:

您可以使用SharedPreferences.getAll() 检索Map&lt;String,?&gt;,然后使用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();
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您可以使用以下几行直接删除键值,无需进行字符串检查

      SharedPreferences preferences = getSharedPreferences("Mypref", 0);
      preferences.edit().remove("shared_pref_key").commit();
      

      【讨论】:

        猜你喜欢
        • 2011-12-23
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-14
        • 1970-01-01
        • 2017-07-19
        相关资源
        最近更新 更多