Ich habe onSharedPreferenceChanged
in meiner Hauptaktivität implementiert .
Wenn ich die Einstellungen in der Hauptaktivität ändere, wird mein Ereignis ausgelöst.
Wenn ich die Einstellungen über meinen PreferenceActivity
Einstellungsbildschirm ändere ( ), wird mein Ereignis NICHT ausgelöst, wenn Einstellungen geändert werden (da es sich um eine separate Aktivität und einen separaten Verweis auf sharedPreferences handelt?).
Hat jemand eine Empfehlung, wie ich diese Situation überwinden soll?
Vielen Dank!
EDIT1: Ich habe versucht, den Ereignishandler direkt in meiner Präferenzaktivität hinzuzufügen, aber er wird nie ausgelöst. Die folgende Methode wird während onCreate meiner Präferenzaktivität aufgerufen. Wenn ich Werte ändere, wird die Nachricht nie gedruckt ( msg()
ist ein Wrapper für Log.d
).
private void registerChangeListener () {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener () {
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
msg (" ***** Shared Preference Update ***** ");
Intent i = new Intent();
i.putExtra("KEY", key);
i.setAction("com.gtosoft.dash.settingschanged");
sendBroadcast(i);
// TODO: fire off the event
}
});
}