2011-02-10 90 views
0

我使用sharedPreferences來存儲我定期訪問的一些簡單數據。我注意到當我用SharedPreferences.Editor(我打電話給commit())「放」某些東西時,當我稍後嘗試訪問與prefs.getAll()的首選項時,我新添加的項目不存在。SharedPreferences不爽快?

奇怪的是,如果我關閉我的應用程序並再次啓動它,它就會出現。這就像我的應用程序正在運行時,首選項不會令人耳目一新。這是由設計嗎?是什麼賦予了?

順便說一句,我注意到同樣的行爲,而做editor.remove("key")。我刪除了一些東西(並撥打commit()),而當我撥打getAll()時,刪除的項目仍然在Map返回。如果我嘗試再次刪除它,我的應用程序組將關閉。

我一定在做錯事。任何幫助表示讚賞。

感謝, 鮑比

+1

你可以發佈你使用的代碼嗎? – Dalmas 2011-02-10 23:20:41

回答

0

這不應該,如果你使用SharedPreferences正確的方式發生。只有兩種情況下我能想到當這一切發生的是,如果:

  1. commit()返回false(是的,它確確實實有一個返回值)或
  2. 你要使用多個進程,該SharedPreferences這是not supported yet
+0

你好,我檢查了回報,這是真的。我不確定您的意思是「跨多個流程」 - 我不認爲這適用於我的應用程序。再次,如果我退出我的應用程序並重新進入,我所有的更改都在那裏。 – Bobby 2011-02-10 23:53:06

0

好的,我的錯誤。我在怪異的對話框中顯示了首選項列表。我錯過了對話框創建只被調用一次,所以它從來沒有更新我的新值。爾加!

無論如何,謝謝!