J'ai vu des messages connexes comme celui-ci - Disable the Asynchronous display of a Toast [duplicate] et j'ai essayé la méthode cancel() à partir de là, mais ils ne résolvent pas mon problème. Peut-être est-ce dû à une différence liée à l'activité de préférence.Besoin d'afficher Toast juste après clic
S'il vous plaît, aidez-moi à améliorer mon code afin que le Toast s'affiche juste après le clic.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_screen);
Context context = getApplicationContext();
settings = PreferenceManager.getDefaultSharedPreferences(context);
settings.registerOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences settings, String key) {
Toast theToast;
theToast = Toast.makeText(this, "toast text", Toast.LENGTH_LONG);
if(key.equals("checkbox_key")){
theToast.show();
}
if (key.equals("checkbox_key")&& theToast != null){
theToast.cancel();
}
}
Vous me comprenez bien. À propos de vous solution. AndroidStudio montre que la variable "mCurrentToast" n'a peut-être pas été initialisée. J'ai déplacé cette ligne 'mCurrentToast = Toast.makeText (ceci," toast texte ", Toast.LENGTH_LONG);' avant tout si les instructions comme dans mon code précédent, mais il bloque l'application (NullExeption). – Robert
Vous ne pouvez pas déplacer cette ligne avant la ligne ".cancel()", sinon vous annulez votre nouveau Toast au lieu de l'ancien. Définissez mCurrentToast sur null lorsque vous le créez. Je vais mettre à jour mon exemple de code pour refléter cela. – ajpolt
Maintenant, cela fonctionne parfaitement. Merci de votre aide! – Robert