Comment faire android dialogue modale?
J'ai mis en place cette coutume AlertDialog comme suit:
AlertDialog dialog = new AlertDialog.Builder(this)
.setView(dialogView)
.setTitle(getResources().getString(R.string.addedit_asklater_price))
.setCancelable(false)
.create();
dialog.setMessage(text);
dialog.setOwnerActivity(this);
dialog.setButton(...)
dialog.setButton(...)
dialog.show();
doProcessUserInput();
Cependant, j'ai remarqué que, après la dialog.show()
contrôle immédiatement flux de doProcessUserInput()
sans attente pour l'utilisateur pour fermer la boîte de dialogue aide des boutons du dialogue.
Ce comportement semble bizarre, je m'attendais à la boîte de dialogue modale, dans la façon dont j'ai toujours connu des boîtes de dialogue modales de l'être.
Je peux restructurer mon code pour que doProcessUserInput()
est appelée à partir de la boîte de dialogue du bouton onClickListener
. J'ai été cependant demandais si il y avait un moyen pour mettre en pause l'exécution du programme à dialog.show()
jusqu'à ce que le dialogue est terminé.
PS:
- J'ai essayé à l'aide d'un Dialogue Personnalisé qui s'étend de Dialogue, mais il a l'
même problème. Je suis de la création de la boîte de dialogue d'un bouton
onClickListener
. - J'ai essayé de mise en œuvre de la
Activity::onCreateDialog
et à l'aide deshowDialog(id)
au lieu dedialog.show()
, mais qui a le même problème.
OriginalL'auteur Code Poet | 2011-12-05
Vous devez vous connecter pour publier un commentaire.
Sûrement, vous pouvez configurer
onPositiveButton
écouteur de clics pour votre dialogue et de faire de votre action de celui qui écoute.Si vous souhaitez interrompre votre activité à un certain point, vous, probablement, il peut utiliser l'ancienne java
wait/notify
mécanisme ou plus commode de nouveaux mécanismes tels que les exécuteurs.Pourquoi voudriez-vous faire cela, n'est cependant pas clair. Android les dialogues sont spécifiquement conçus pour être non-modale de sorte qu'ils peuvent en aucun cas bloquer votre application (en tant que votre demande peut inclure d'autres activités telles que native activité d'Appel Téléphonique et il serait mauvais si ceux qui sont bloqués).
OriginalL'auteur Alexander Kulyakhtin
Cela fonctionne pour moi: créer une Activité que votre boîte de dialogue. Ensuite,
Ajouter à votre manifeste pour l'activité:
android:thème="@android:style/Thème.Boîte de dialogue"
Ajouter à onCreate de votre activité
setFinishOnTouchOutside (false);
Remplacer onBackPressed dans votre activité:
@Override
public void onBackPressed()
{
//prévenir le "retour" de quitter cette activité
}
La première donne à l'activité de la boîte de dialogue rechercher. Les deux derniers qu'elle se comporte comme une boîte de dialogue modale.
OriginalL'auteur Peri Hartman
En outre, vous ne devez pas bloquer le flux de l'application dans une boîte de dialogue.
Android dev guide et les meilleures pratiques communautaires affirme que si vous voulez quelque chose de modal, vous ont pour le faire dans le
onClickListener
s.OriginalL'auteur Ramseys
Avant d'appeler la boîte de dialogue méthode show (), essayez d'appeler .setCancelable(faux). Cela a parfaitement fonctionné pour moi.
OriginalL'auteur ori888