默认的共享首选项不会在活动之间共享

时间:2019-06-29 11:46:40

标签: android sharedpreferences

我正在尝试通过sharedpreferences在活动之间传递字符串集,但似乎默认的sharedpreferences为每个活动制作了两个文件。

我试图与具有相同名称的PRIVATE_MODE共享,但没有成功

  SharedPreferences appPrefernces = PreferenceManager.getDefaultSharedPreferences(ctx);
        SharedPreferences.Editor appEditor = appPrefernces.edit();
        Set<String> usersSet = appPrefernces.getStringSet("users", new HashSet<String>());
        if(!usersSet.contains(id)) {
            usersSet.add(id);
            appEditor.putStringSet("users", usersSet);
            appEditor.apply();
        }


 SharedPreferences appPrefernces = PreferenceManager.getDefaultSharedPreferences(Main.this);
                users = appPrefernces.getStringSet("users",new HashSet<String>());

似乎它保存了信息,但是在提取信息时我得到了一部分信息

1 个答案:

答案 0 :(得分:1)

通过这种方式,您可以确定正在使用的首选项文件:

private static void saveUsers(Context context, Set<String> usersSet) {
    final SharedPreferences sharedPreferences = context.getSharedPreferences("preferences", Context.MODE_PRIVATE);
    final SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putStringSet("users", userSet).apply();
}

private static Set<String> loadUsers(Context context){
    final SharedPreferences sharedPreferences = context.getSharedPreferences("preferences", Context.MODE_PRIVATE);
    return sharedPreferences.getStringSet("users", new HashSet<String>());
}

希望有帮助。