1

Le problème est qu'un toast apparaît autant de fois que vous ouvrez l'activité Paramètres, alors que j'en ai besoin qu'une seule fois après chaque clic sur CheckBox.Pourquoi Toast apparaît plus de fois que nécessaire?

Merci d'avance à tous ceux qui ont essayé d'améliorer mon code.

Une description plus détaillée de la façon dont le code fonctionne:

  • je vais à l'activité Paramètres et cocher une case
  • Toast apparaît une fois
  • Je reviens à l'activité précédente en utilisant le bouton Retour, ne rien faire , revenez à l'activité Paramètres une fois de plus et cochez une case.
  • Toast apparaît deux fois
  • Je retourne à l'activité précédente en utilisant le bouton Retour, ne rien faire, revenir à l'activité des paramètres une fois de plus et cocher une case.
  • Toast apparaît trois fois
  • Et ainsi de suite

    public class PrefActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { 
    
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        addPreferencesFromResource(R.xml.pref_screen); 
        Context context = getApplicationContext(); 
        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); 
        settings.registerOnSharedPreferenceChangeListener(this); 
    } 
    
    public void onSharedPreferenceChanged(SharedPreferences settings, String key) { 
        Toast mToast; 
        mToast = Toast.makeText(this, "toast text", Toast.LENGTH_SHORT); 
        if(key.equals("checkbox_key")){ 
         mToast.show(); 
        } 
    } 
    

    }

Répondre

0

Vous devez appeler settings.unregisterOnSharedPreferenceChangeListener() dans votre méthode onPause() lorsque vous quittez l'activité. Et je suggère d'appeler settings.registerOnSharedPreferenceChangeListener() dans votre onResume() callback plutôt que onCreate().