Ho un PreferenceActivity
con un albero 2 livello di PreferenceScreen
s, qualcosa di simile a:PreferenceActivity sintesi aggiornamento
<PreferenceScreen>
<PreferenceScreen android:key="A">
<ListPreference/>
<EditTextPreference/>
</PreferenceScreen>
<PreferenceScreen android:key="B">
<ListPreference/>
<EditTextPreference/>
</PreferenceScreen>
...
</PreferenceScreen>
ciascuna delle schermate delle preferenze di livello inferiore, ad esempio, A e B, è la raccolta di due pezzi di dati correlati . Voglio che il sommario di quegli elementi padre sia una combinazione dei valori correnti delle due sub preferenze.
Ho provato ad aggiungere onPreferenceChangeListener sulle preferenze foglia e l'aggiornamento del riepilogo da lì, ma non sembra prendere. Le preferenze sono tutti creati a livello di codice all'interno della attività, in modo che sto facendo qualcosa di simile in 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;
}
});
Allora ho cercato di trovare una posizione in cui posso essere informato che sono tornato al top screen preferenze di livello da una sottopagina in modo che possa aggiornare a quel punto. Tuttavia, sono confuso su come vengono visualizzati gli schermi di livello inferiore. Sembra che siano in realtà dialoghi, non attività complete poiché onPause/onResume non viene chiamato quando ci si sposta tra di loro. C'è qualche metodo che mi manca verrà chiamato quando si torna alla pagina di primo livello?
Ho anche provato ad aggiungere un sharedPreferenceChangeListener, come descritto here, ma che sembra non essere mai chiamato.
Qualcuno ha qualche suggerimento su cosa mi manca qui, o un approccio più semplice mi manca?
Grazie per il suggerimento. Ho smesso di lavorarci un po 'di tempo fa, ma proverò quando ne avrò l'occasione. –
Purtroppo questo non ha funzionato per me. –
ha funzionato alla grande, grazie – Yahia