У меня есть PreferenceActivity
с деревом 2 уровня PreferenceScreen
с, что-то вроде: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, но это никогда не называется.
У любого есть какие-либо намеки на то, что мне не хватает здесь, или какой-либо более легкий подход, который мне не хватает?
Спасибо за предложение. Я перестал работать над этим некоторое время назад, но я попробую, когда у меня появится шанс. –
К сожалению, это не сработало для меня. –
работал отлично, спасибо – Yahia