2011-03-28 2 views
1

J'ai un AlertDialog personnalisé où un utilisateur doit définir un mot de passe. Il y a deux vues edittext. Je les compare d'abord s'ils correspondent et s'ils ont plus de 3 caractères. Si elles ne correspondent pas, j'affiche un toast pour alerter l'utilisateur. Mais après la soumission et la vérification de la boîte de dialogue se ferme. Comment puis-je le garder ouvert jusqu'à ce que l'utilisateur insère les valeurs correctes?Maintien de l'interface DialogInterface d'AlertDialog ouverte

Répondre

3

Je regardais faire quelque chose de similaire et je ne pouvais pas trouver un moyen de le faire avec le standard AlertDialog tel qu'il est. Une façon possible que j'ai trouvée était de ne pas spécifier d'écouteurs de bouton dans votre AlertDialog et de placer à la place une vue avec vos propres boutons personnalisés qui effectuent les contrôles, puis de fermer la boîte de dialogue si nécessaire. Je n'ai pas encore essayé cela pour voir comment ça fonctionne.

Une autre option consiste à créer votre propre boîte de dialogue personnalisée en sous-classant Dialogue. Fyi: recréer la boîte de dialogue ne fonctionne pas.

1

Vous devez définir une variable globale comme

boolean showAlert = true; 

Et attacher un auditeur onClick au AlertDialog et après cheking pour voir s'il est nécessaire de montrer à nouveau l'alerte. S'il y a un besoin, vous devriez le montrer à nouveau. Vous ne pouvez pas le garder ouvert si l'utilisateur clique sur un bouton du AlertDialog. Vous devez le recréer à nouveau.

+0

Si vous appelez showDialog() dans onClick de la boîte de dialogue, il est simplement ignoré. – WarrenFaith

+0

@WarrenFaith En recréant, je veux dire créer un nouvel objet de AlertDialog. – vendor

+0

Je le sais. J'ai essayé de trouver un moyen de créer un nouvel objet de la boîte de dialogue lors de l'appel de showDialog(). Je viens d'utiliser dismissDialog() pour le supprimer, mais appeler à nouveau showDialog() ne crée pas un nouvel objet de la boîte de dialogue. J'ai dû utiliser removeDialog() qui supprime toute référence interne à la boîte de dialogue afin que showDialog() crée un nouvel objet. C'est tout ce que j'ai essayé de dire :) – WarrenFaith