找不到SharedPreferences数据

时间:2015-06-21 22:06:45

标签: 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());

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

1 个答案:

答案 0 :(得分:1)

根据文档(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实例。如果您这样做,则无法保证存储数据的一致性,也无法根据您的能力修改实例。