2015-11-04 32 views
0

我目前正在嘗試保存並檢索我的android應用程序中的共享偏好字符串數組。問題是,我沒有添加任何字符串到我的「字符串集」,所以基本上當我試圖檢索它時,它將返回null。問題是,在我得到字符串集之後,我想向該集添加一個字符串。但它顯示錯誤,我不能將一個字符串添加到空對象。有人能幫我嗎?謝謝..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(); 

回答

1

你應該只返回一個空的執行Set作爲你的默認值。例如,一個空ArraySet應該很好地工作:

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

謝謝您的回覆,其實我之前試過已經和IDE問我到ArrayList澆鑄成集,但是當我做,它也顯示了ArrayList不能被轉換爲集合的錯誤。如果我嘗試添加新的集合的空實現,它也實現了我不認爲需要的很多方法。 – user3576118

+0

我有ArrayLists的大腦,ArraySet是你在找什麼。編輯答案以修復錯誤 – fractalwrench

+1

ArraySet僅在API 23之後可用,所以如果您需要向下兼容,則可能需要使用HashSet。希望在某些時候會有像ArrayMap一樣的ArraySet的支持庫實現。 – Brucelet

1
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();