每次应用程序启动时都会重置SharedPreferences

时间:2016-07-22 12:51:51

标签: android android-sharedpreferences

我在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中存在该代码。

2 个答案:

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