我仍在寻找一种方法来根据其当前值更改 ListPreference 的摘要。经过一些研究,我设法让它(部分)工作:
ListPreference pref = (ListPreference) findPreference("Repeat_PREFS");
pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object val) {
ListPreference pref = (ListPreference) findPreference("Repeat_PREFS");
pref.setSummary(pref.getEntry());
return true;
}
});
问题是,当我第一次选择一个值时,摘要会更改为其他值或根本没有更改。当我第二次选择相同的值时,摘要设置正确。我究竟做错了什么?
最佳答案
没有方法可以激活偏好的行为。您需要使用要设置为摘要的值调用 setSummary(),例如使用偏好监听器。
编辑(在更改问题之后......):
不要使用 Preference.OnPreferenceChangeListener
,因为它是在新值被持久化之前调用的(参见 http://developer.android.com/reference/android/preference/Preference.OnPreferenceChangeListener.html )因此您第一次更改偏好值时的行为。
我建议在您的PreferenceFragment
或PreferenceActivity
中实现OnSharedPreferenceChangeListener
。 (不要忘记注册和注销监听器。)此监听器在首选项更改完成后调用。您还应该在 XML 中为首选项设置一个默认值。
关于android - 更改首选项摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12386408/