我有的PreferenceScreen
个2级树PreferenceActivity
,类似:PreferenceActivity更新概要
<PreferenceScreen>
<PreferenceScreen android:key="A">
<ListPreference/>
<EditTextPreference/>
</PreferenceScreen>
<PreferenceScreen android:key="B">
<ListPreference/>
<EditTextPreference/>
</PreferenceScreen>
...
</PreferenceScreen>
每个下水平偏好屏幕,例如,A和B中,收集数据的两个相关片。我希望这些父项目的摘要是两个子偏好的当前值的组合。
我试着在叶子首选项上添加onPreferenceChangeListener,并从那里更新摘要,但似乎没有采用。首选项都在活动范围内编程方式创建的,所以我在做这样的事情在的onCreate:
leafListPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
// do some work
prefScreenA.setSummary(/* get new summary based on newValue */);
return true;
}
});
然后我试图寻找在那里我可以告知我已经回到了顶级的喜好屏幕的位置从一个子页面,以便我可以在那一点更新。但是,我很困惑如何显示较低级别的屏幕。它看起来像实际上是对话框,而不是完整的活动,因为onPause/onResume在它们之间移动时不会被调用。是否有某种方法可以解决我在返回顶层页面时将会调用的缺失方法?
我还尝试添加sharedPreferenceChangeListener,如here所述,但似乎永远不会被调用。
任何人都对我在这里失踪的东西有什么提示,或者我失踪的任何更简单的方法?
感谢您的建议。我不久前就停止了这方面的工作,但当我有机会时,我会试试看。 – 2011-04-06 01:34:10