Notifications des changements de préférences
Sur Android, les activités qui héritent de classe PreferenceActivity s'occupent de l'affichage et de la gestion des préférences dans une application. Cependant il peut être intéressant d'être notifié d'un changement de la valeur d'une préférence afin d'effectuer une action précise. Il est nécessaire de faire 2 choses pour ceci :
- Implémenter l'interface OnSharedPreferenceChangeListener sur la classe qui à besoin d'écouter les changements des préférences et donc de définir la méthode onSharedPreferenceChanged(SharedPreferences, String).
- Disposer d'un objet de type SharedPreferences qui recevra les notifications.
Ainsi on doit avoir une signature de classe du type suivant.
public class Main extends Activity implements OnSharedPreferenceChangeListener
Puis dans la méthode onCreate(Bundle) (en général), on instancie l'objet de type SharedPreferences et lui demande de réagir aux changements des valeurs des préférences.
this.preferences = PreferenceManager.getDefaultSharedPreferences(this); this.preferences.registerOnSharedPreferenceChangeListener(this);
Lorsqu'une préférence changera de valeur la méthode onSharedPreferenceChanged(SharedPreferences, String) sera appelée. On peut alors y mettre le code devant exécuter les actions voulues.
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Toast.makeText(this, "Changed preference: " + key, Toast.LENGTH_SHORT).show(); }