2013-03-28 73 views
3

我發現某些值已被存儲到Set重新啓動應用程序後丟失了。爲什麼?這是一個Android API錯誤?有人建議將字符串存儲在數據庫中。我還沒有測試過,但我認爲這個建議是解決問題的方法。那麼getStringSetputStringSet使用getStringSet和putStringSet丟失一些值

回答

5

從我的理解,這是一個錯誤。問題在於,當你嘗試存儲一個集合時,Android會將你正在嘗試保存的已修改集合與存儲在SharedPreferences中的當前集合進行比較。當它們是同一個對象(具有相同的參考)時,新的被忽略。

解決方法是在存儲之前創建集合的新副本。

Here是細節和問題提交https://code.google.com/p/android/issues/detail?id=27801

+0

謝謝。但是我用一個包含「NOT NULL UNIQUE TEXT」字符串的表格來表示一個數據庫。 – 2013-03-28 16:30:32

0

我有使用SharedPreferences相同的問題。 Android API似乎存在一個錯誤。我做了就可以了小哨here

對我來說,最簡單的方法是將其刪除,提交它,然後把它和再犯它

3

SharedPreferences.Editor編輯= preferences.edit();
editor.remove(key);
editor.commit();
editor.putStringSet(key,value);
editor.commit();

+0

嘗試解釋這個答案多一點。代碼很好,但解釋對所有未來的觀衆更好。 – SuperPrograman 2013-10-16 02:27:41