2013-05-06 36 views
1

我創建了一個android偏好頁面,並希望顯示在摘要中選擇的當前選項。Android偏好活動沒有正確更新

所以我實現了onSharedPreferenceChanged監聽器,這也是正確調用。但是,沒有屏幕更改,並顯示舊選項。

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
    // just update all 
    ListPreference lp = (ListPreference) findPreference(PREF_DOWNLOAD_WEB); 
    lp.setSummary(getString(R.string.pref_listDownloadWebSummary) + ": %s"); 
} 

這是一個已知的錯誤嗎?

回答

2

我注意到當我設置另一個首選項摘要時顯示更新的摘要。所以我把摘要設置爲「虛擬」,然後是真正的字符串。它也可以工作。

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
    // just update all 
    ListPreference lp = (ListPreference) findPreference(PREF_DOWNLOAD_WEB); 
    lp.setSummary("dummy"); // required or will not update 
    lp.setSummary(getString(R.string.pref_listDownloadWebSummary) + ": %s"); 

} 
+0

您嘗試過哪些Android版本? %s似乎不適用於Android 2.3。 (我沒有嘗試完全相同的代碼,但是非常相似。) – aij 2014-05-21 21:53:48

+0

這適用於Android 2.3。如果您在問題中發佈代碼,那就更好了。 – 2014-05-29 20:02:30

+0

嗯,我使用Preference.OnPreferenceChangeListener來代替,但我不確定它確實值得考慮,因爲使用findIndexOfValue查找字符串非常容易。 – aij 2014-05-29 21:55:17