J'ai implémenté onSharedPreferenceChanged
de mon activité principale.
Si je modifie les préférences de l'activité principale, mon événement se déclenche.
Si je modifie les préférences à travers mon écran des préférences (PreferenceActivity
) que mon cas ne se déclenche PAS lorsque les préférences sont modifiés (parce que c'est une activité distincte et séparée de référence pour sharedPreferences?)
Quelqu'un at-il une recommandation de la façon dont je devrais aller sur surmonter cette situation?
Merci!
EDIT1: j'ai essayé d'ajouter le gestionnaire d'événement dans mon activité de préférence, mais il n'est jamais déclenché. La méthode suivante est appelée lors de onCreate de mon activité de préférence. Quand j'ai changer les valeurs, il n'a jamais imprime le message (msg()
est un wrapper pour 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
}
});
}