我遇到了這個問題,花了相當多的時間來弄清楚這個問題,所以我分享了我的經驗。OnSharedPreferenceChangeListener沒有調用Integer首選項
我使用SharedPreferences偵聽器在BroadcastReceiver(坐在AlarmManager事件上,但對主題無關緊要)和我的Activity之間傳遞數據。以前我使用intent來達到同樣的目的,但想到一個想法(瘋狂?可能使用Handlers是一個更好的模式?)我想到了,可以通過SharedPreferences偵聽器來完成。
所以我在Activity中註冊OnSharedPreferenceChangeListener和BroadcastReceiver我只是在SharedPreferences上使用一個編輯器,在那裏放置一個值,然後在Activity中接收它。目前看起來很簡單。它的工作原理是,但是不適用於整數偏好。因此,舉例來說,如果我叫
pref.edit().putString("0").commit();
的OnSharedPreferenceChangeListener被調用,但如果我用這個:
pref.edit().putInt(0).commit();
是不叫!
我想問題是SharedPreferences是爲Settings設計的,在Android中沒有SharedPreference類型的整數,我們無法爲EditTextPreference指定整數值。所以,由於這個原因或其他原因,OnSharedPreferenceChangeListener不會爲int類型的首選項調用。謹防!
嗯,現在我想我應該使用,而不是消息的處理程序....
我忘了說,在我與一個字符串的偏好,而不是整數一個結束這種特殊情況下,這是最短的修復 – Mixaz