所以我有一些共享的偏好:
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();
但是我不想添加已经添加的字符串。所以我想检查我添加的字符串是否已经是我的共享首选项中的值。什么是最好的方法呢?
(或者我可以只是切换我的值和键,并检查我的共享首选项中是否还没有该键)
答案 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);