2014-09-13 35 views
2

每當我開始我的應用程序重置我有以下代碼:SharedPreferences進行更新,但是當應用程序重置

C.userPreferences = getSharedPreferences("default",0); 
C.userPreferencesEditor = C.userPreferences.edit(); 

C.something = C.userPreferences.getStringSet(C.SOMETHING, null); 
C.something = C.something == null ? new HashSet<String>() : C.something; 

for(String str : C.something){ 
    Log.d("debugging C.something",str); 
} 

而這個正確記錄「一」,「二」從琴絃組。

之後,我有以下功能:

C.something.add("name"); 
C.userPreferencesEditor.putStringSet(C.SOMETHING, C.something); 
C.userPreferencesEditor.apply(); //or with .commit(); 

和調試節目 「一」, 「二」 和 「名」。 當我第一次重新啓動應用程序並進行調試時,我只能獲得「one」和「two」。 關於爲什麼發生這種情況的任何想法? tyvm

回答

2

This說,從各種get方法返回

對象必須由應用程序不變的處理。

More specifically

請注意,您不能修改此調用返回集合實例。如果存儲數據的一致性無法保證,您也無法修改該實例。

你能嘗試複製檢索到的HashSet的,添加新條目的副本,並將其保存到偏好?

順便說一句 - 我真的很好奇,知道爲什麼這是它的方式 - 不是很直觀......

相關問題