Dans mon application Android, afin de demander à l'utilisateur s'il veut reprendre un jeu actuel, j'affiche une boîte de dialogue disant "Voulez-vous reprendre le jeu actuel? Oui - Non" sur l'activité de jeu principale. < / p>
La chose est que si je reprends diverses fois cette activité sans répondre à la boîte de dialogue, je reçois plusieurs dialogues, sur les autres, ce qui n'est évidemment pas mon objectif. P>
Je pourrais facilement éviter ce comportement à l'aide d'un Var booléen, mais je me demandais si la classe de dialogue avait une sorte d'option empêchant d'être dupliquée ou de quelque chose du genre. P>
6 Réponses :
Vous pouvez utiliser Singleton Motif, pourrait être approximativement comme ceci:
Dialog myDialog = null; public void showDialog() { if(myDialog == null) { /* show your dialog here... */ myDialog = ... } } public void hideDialog() { if(myDialog != null) { /* hide your dialog here... */ myDialog = null; } }
Bonjour Sam, je suis confronté au même problème, mais j'utilise alertdialogbuilder pour créer une boîte de dialogue, n'importe quelle solution .. ??
plutôt ensuite faire des hacks ou utiliser des booléens, vous pouvez utiliser Le Méthode donnée par Google elle-même Il renvoie une valeur booléenne
Si la boîte de dialogue s'affiche actuellement. P> P>
private Dialog mDialog; private void showDialog(String title, String message) { AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this) .setTitle(title) .setMessage(message); // Dismiss any old dialog. if (mDialog != null) { mDialog.dismiss(); } // Show the new dialog. mDialog = dialogBuilder.show(); }
Utilisation méthode isadded (),
EXEMPLE KOTLIN: P>
private fun dialogShow(dialog: DialogFragment?) { val fragmentManager: FragmentManager = (context as MyActivity).fragmentManager dialog?.show( fragmentManager,TAG) }
J'ai également rencontré un tel problème lorsque j'ai essayé de remplacer la méthode Il s'avère que j'ai supprimé Retour ajouté, l'erreur a disparu. p>
J'espère que quelqu'un aidera p> ondismiss () code> sans
super.ondismiss (boîte de dialogue); code> p> p>
super.ondismiss (dialogue) code> et à cause de cela, les dialogues ont été dupliqués p>
Vérifier la boîte de dialogue Affiche déjà ou non
private Dialog mDialog; private void showDialog(String title, String message) { //stop multiple dialog window if(dialog != null && dialog.isShowing()) { return; } AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this) .setTitle(title) .setMessage(message); dialog = dialogBuilder.show(); }
Vous pouvez essayer la dialogue.isshowing ()
Lorsque vous quittez l'application et que vous ouvrez à nouveau, l'activité est redémarré et, je suppose, à cause de votre formation de code, la boîte de dialogue est redémarré, mais peut-être été jamais fermé auparavant .. Peut-être que si vous mettez en pause () {Dialog.dismiss (); } il pouvait acclamer votre problème
isfinissant () code>?