In meiner App können einige Einstellungen möglicherweise geändert werden, während PreferenceActivity
nicht geöffnet ist, und ein Problem, auf das ich gestoßen bin, ist, dass addPreferencesFromResource
in onCreate
aufgerufen wird, also sag, ich öffne die PreferenceActivity
, dann gehe zu einem anderen Bildschirm von dort, dann tue etwas, das die Einstellungen ändert, dann drücke die Zurück-Taste, um zum PreferenceActivity
zurückzukehren, dann haben sich bestimmte Einstellungen im Layout nicht geändert.
Also, wie könnte ich alle Preferences
jedes Mal neu laden, wenn onResume
(oder onStart()
) aufgerufen wird, ohne das Layout zu duplizieren?
edit: Diese Lösung funktioniert nur für API 11 +.
Ich bin mir nicht sicher, ob ich Ihr Problem vollständig verstanden habe, aber Sie könnten einen Aufruf von recreate () in die onResume der Aktivität einfügen, was meiner Erfahrung nach dazu führt, dass die Aktivität den gesamten Lebenszyklus wieder durchläuft.
Um sicherzustellen, dass Sie dies nur tun, wenn es tatsächlich schmutzige Daten gibt, würde ich in den SharedPreferences ein Flag setzen, das Ihrer Aktivität in onResume () mitteilt, dass es neu erstellt werden muss.
%Vor%Ich hatte ein ähnliches Problem. Wenn ich keine einfache Möglichkeit finde, meine PreferenceActivity selbst zu aktualisieren, bestand meine Lösung darin, dies meiner PreferenceActivity hinzuzufügen:
%Vor%Dies führt dazu, dass der Prefs-Bildschirm beim nächsten Start erneut von SharedPreferences geladen wird. Unnötig zu sagen, dass dieser Ansatz nicht funktioniert, wenn Sie mit der Zurück-Schaltfläche zu Ihrem Einstellungsbildschirm zurückkehren möchten.
Tags und Links android reload preferenceactivity sharedpreferences preference