java - 未找到 SharedPreferences 数据

标签 java android

我一直在尝试让 SharedPreferences 正常工作,但没有成功。我一直在检查保存中的所有值,一切看起来都工作正常;但是,当我去检索保存的数据时,却找不到它。我尝试了几种不同的方法,包括 getSharedPreferences(key, Context.MODE_PRIVATE) 来获取首选项。我当前使用的方法是其他人答案的解决方案,但不是我的答案。

保存:

    Log.i("MineStalker", "Saving");
    SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit();
    Set<String> server_set = new HashSet<String>();
    for (MinecraftServer server : servers) {
        server_set.add(server.getDataString());
        Log.i("MineStalker", "Save loop");
    }
    Log.i("MineStalker", "Save size: " + server_set.size());
    editor.putStringSet("server_data", server_set);
    editor.commit();

获取:

    servers = new ArrayList<>();
    Set<String> server_set = new HashSet<String>();
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    preferences.getStringSet("server_data", server_set);
    Log.i("MineStalker", "Create size: " + server_set.size());

总结一下,我保存的数据没有显示。

最佳答案

根据文档(link),getStringSet返回数据,第二个参数是如果没有找到该键的值则返回的默认值。像这样的东西应该有效:

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    Set<String> server_set = preferences.getStringSet("server_data", new HashSet<String>());
    Log.i("MineStalker", "Create size: " + server_set.size());

来自文档: 请注意,您不得修改此调用返回的 set 实例。如果您这样做,则无法保证所存储数据的一致性,也根本无法保证您修改实例的能力。

关于java - 未找到 SharedPreferences 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30969794/

相关文章:

java - Java 中的位操作 - 2 的补码和翻转位

java - 字符串无法识别为空格或空

java - 为什么 if 语句发送 continue 到错误的 while 循环

android - 下拉菜单背景在 Android 应用中变为黑色

android - 从git克隆后Gradle Build连接超时

java - 第一次使用 mockito

java - 如何将 SVN 修订号注入(inject) JAR?

android - 无法解析方法 get(int)

java - 将json对象解析为android字符串

javascript - framework 7 swipebox 无法在 cordova android 应用程序中显示附加图像