2013-05-06 59 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