AS201281 Wiki

Your check engine light is on!

User Tools

Site Tools


programming:android:listen_preferences_changes

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();
}
programming/android/listen_preferences_changes.txt · Last modified: 2021/01/04 20:41 by 127.0.0.1