如何判断我的共享首选项是否已具有特定值

时间:2015-10-07 08:32:54

标签: java android key sharedpreferences

所以我有一些共享的偏好:

 public SharedPreferences prefs = this.getSharedPreferences("com.example.me1jmo.insult_generator", Context.MODE_PRIVATE);

我正在添加新的键值对,如下所示:

int number = prefs.getAll().size();
        int newkey = ++number;
        String newkeystring = "" + newkey;
        prefs.edit().putString(newkeystring,saved).commit();

但是我不想添加已经添加的字符串。所以我想检查我添加的字符串是否已经是我的共享首选项中的值。什么是最好的方法呢?

(或者我可以只是切换我的值和键,并检查我的共享首选项中是否还没有该键)

1 个答案:

答案 0 :(得分:1)

您可以使用prefs.contains(newkeystring)检查该密钥的条目是否已退出。来自documentation

  

检查首选项是否包含首选项。

修改

  

我的密钥不存在,它们总是与我想要的不同   知道我输入的值是否已经在首选项中。 -

然后唯一的解决方案是循环并检查值是否退出。检索您可以使用的SharedPreferences内容getAll(查看我的回答here

public boolean exits(String value) {
    Map<String, ?> allEntries = prefA.getAll();
    for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
        Log.d("map values", entry.getKey() + ": " + entry.getValue().toString());
        if ("yourvalue".equals(entry.getValue().toString()) {
            // the value exits; 
            return true;
        }
    } 
    return false;
}

并将其称为exits("theValueToCheck);