我在MainActivity.java上有这段代码:
SharedPreferences ids = getSharedPreferences(AddedIds, Context.MODE_PRIVATE);
SharedPrefernces.Editor editor = ids.edit();
if (ids.getStringSet(AddedIds, id).isEmpty()) {
Set<String> id = new HashSet<String>();
editor.putStringSet(AddedIds, id);
editor.apply();
}
此代码正在检查Set<String>
中是否存在SharedPreferences
。如果没有,则会将Set<String>
添加到SharedPreferences
。
问题在于,每当我打开应用程序时,代码都会被激活,SharedPreferences
中存在该代码。
答案 0 :(得分:1)
您的代码所做的是检查SharedPreferences
中存储的集合是否为空。
您想要的是使用contains method来检查字段是否存在。那应该是
SharedPreferences ids = getSharedPreferences(AddedIds, Context.MODE_PRIVATE);
SharedPrefernces.Editor editor = ids.edit();
if (!ids.contains(AddedIds)) {
Set<String> id = new HashSet<String>();
editor.putStringSet(AddedIds, id);
editor.apply();
}
答案 1 :(得分:0)
我相信id是你在stringset中搜索的字符串。将您的代码更改为以下。
Set<String> set = ids.getStringSet(AddedIds, null);
Boolean keyfound = false;
if ( set != null){
for (String key : set){
if(key.equals(id)){
keyfound = true;
break;
}
}
if(!keyfound){
set.add(id);
editor.putStringSet(AddedIds, set);
editor.apply();
}
}
else{
set = new HashSet<String>();
set.add(id);
editor.putStringSet(AddedIds, set);
editor.apply();
}