【问题标题】:android adding value to sharedpreference string set from nullandroid将值添加到从null设置的sharedpreference字符串
【发布时间】:2016-02-05 03:54:38
【问题描述】:

我目前正在尝试将字符串数组保存并检索到我的 android 应用程序中的共享首选项中。问题是,我没有在我的“字符串集”中添加任何字符串,所以基本上当我尝试检索它时,它会返回 null。问题是,在我得到字符串集之后,我想在集合中添加一个字符串。但它显示错误,我无法将字符串添加到空对象。有人能帮我吗?谢谢..

pref = getSharedPreferences("save", MODE_PRIVATE);
Set<String> setId = pref.getStringSet("id", null);
setId.add("admin");

Editor editor = pref.edit();
editor.putStringSet("id", setId);
editor.commit();

【问题讨论】:

    标签: android arrays string set sharedpreferences


    【解决方案1】:

    您应该只返回一个空的 Set 实现作为您的默认值。例如,一个空的 ArraySet 应该可以正常工作:

    Set<String> setId = pref.getStringSet("id", new ArraySet<>()); 
    

    【讨论】:

    • 谢谢你的回复,其实我之前试过了,IDE让我把arraylist转换成set,但是当我这样做的时候,它也显示arraylist不能转换成set的错误.如果我尝试添加 new Set 的空实现,它也会实现很多我认为不需要的集合方法。
    • 我脑子里有 ArrayLists,ArraySet 就是你要找的。编辑答案以修复错误
    • ArraySet 仅在 API 23 之后可用,因此如果您需要向后兼容,您可能需要使用 HashSet。希望在某个时候会有 ArraySet 的支持库实现,就像 ArrayMap 一样。
    【解决方案2】:
      SharedPreferences pref = getSharedPreferences("save", MODE_PRIVATE);
        Set<String> setId = pref.getStringSet("id", null); 
        //The second argument 'null' means if there is no value for key "id", it will return null
        if(setId == null){
            setId = new HashSet<String>();
        }
        setId.add("admin");
    
        SharedPreferences.Editor editor = pref.edit();
        editor.putStringSet("id", setId);
        editor.commit();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 2011-05-17
      • 2015-04-07
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      相关资源
      最近更新 更多