mam PreferenceActivity
z drzewa 2 poziomu PreferenceScreen
s, coś jak:PreferenceActivity Podsumowanie Aktualizacja
<PreferenceScreen>
<PreferenceScreen android:key="A">
<ListPreference/>
<EditTextPreference/>
</PreferenceScreen>
<PreferenceScreen android:key="B">
<ListPreference/>
<EditTextPreference/>
</PreferenceScreen>
...
</PreferenceScreen>
Każdy z ekranów uprzywilejowanych niższy poziom, na przykład A i B, jest zbieranie dwóch powiązanych ze sobą danych . Chcę, by podsumowanie dla tych elementów nadrzędnych było kombinacją bieżących wartości dwóch sub-preferencji.
Próbowałem dodawać wartości onPreferenceChangeListener do preferencji liści i aktualizować stamtąd, ale wydaje się, że nie. wszystkie preferencje są tworzone programowo w ramach działalności, więc robię coś takiego w 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;
}
});
Potem starał się znaleźć miejsce, w którym mogę być poinformowany, że wróciłem do ekranu preferencji najwyższego poziomu z podstrony, abym mógł zaktualizować w tym momencie. Jestem jednak zdezorientowany, jak wyświetlane są ekrany niższego poziomu. Wygląda na to, że są to dialogi, a nie pełne działania, ponieważ onPause/onResume nie jest wywoływany podczas przechodzenia między nimi. Czy jest jakaś metoda, której mi brakuje, która zostanie wywołana po powrocie na stronę najwyższego poziomu?
Próbowałem również dodać sharedPreferenceChangeListener, zgodnie z opisem here, ale nigdy nie wydaje się, że zostanie wywołana.
Ktoś ma jakieś wskazówki na temat tego, czego tu brakuje, lub jakiejkolwiek łatwiejszej metody, której mi brakuje?
Dzięki za sugestię. Przestałem pracować nad tym jakiś czas temu, ale spróbuję, kiedy dostanę szansę. –
Niestety to nie działa dla mnie. –
działał świetnie, dzięki – Yahia