J'ai développé une application Android.
Je souhaite cacher le bouton OK après l'appui de l'utilisateur, car la fenêtre de dialogue restera au premier plan pendant quelques secondes pendant que un calcul a lieu. P>
Ceci est le code: p> Comment puis-je atteindre cela? p> PS: Je ne suis pas intéressant à des techniques plus avancées pour gérer un calcul (tels que: dialogues de progression, multi-filetage). P> Merci. P> P>
4 Réponses :
Vous pouvez définir la visibilité du bouton sur Invisible.
ok.setVisibility(View.INVISIBLE);
Mais comment puis-je obtenir la variable "OK"?
.setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ((AlertDialog)dialog).getButton(which).setVisibility(View.INVISIBLE); // the rest of your stuff } })
Cependant, il semble que votre conception n'est pas parfaite dans cette partie. Il serait probablement préférable d'utiliser asynctack code> avec
progressdialog code>. AsynccTask permet d'exécuter des calculs longs sur un thread de fond afin que votre fil d'interface utilisateur principal n'est pas bloqué et que l'application n'obtiendra pas une ANR.
Existe-t-il un moyen de désactiver le bouton dépend d'un champ de texte sur la barre de dialogue?
@akdurmus: Je crois qu'il devrait y avoir un moyen, cependant, veuillez poser une nouvelle question à ce sujet.
Au lieu de la faire disparaître, je voudrais juste le désactiver. .Setensible (FALSE) CODE> Il est moins Jarring B> pour l'utilisateur. En outre, utilisez certainement un
alertdialog code> à l'intérieur de
asynccttack code> au lieu d'un
alertdialog code>.
setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); where dialog is DialogInterface.
Pour quelqu'un d'autre essayant de désactiver le bouton positif sur un Un endroit qu'il devrait être disponible est dans et de cette façon, vous devez avoir une référence disponible chaque fois que votre fragment est en cours d'exécution, vous pouvez donc simplement appeler Soyez juste prudent avec votre état, un fragment recréé peut avoir des boîtes à cochées ou autre, mais cela n'aura pas que < Code> PositiersButton CODE> Référence, et il réexécutera ce code dans alertdialog code>, beaucoup de ces solutions ne semblent pas fonctionner maintenant - vous ne pouvez pas saisir une référence au bouton dès que vous appelez
créer code> sur le
alertdialog.builder code>, il vient de renvoyer NULL.
Onresume code>, Donc, comme je l'ai eu pour travailler était quelque chose comme ceci: p>
positifbutton.isenabled = false code> chaque fois que vous devez le désactiver. P>
OnResume Code>. Donc, si vous devez effectuer une initialisation (comme désactivation du bouton jusqu'à ce que l'utilisateur sélectionne une option) Assurez-vous d'appeler une fonction qui vérifie l'état actuel et décide si le bouton doit être activé ou non. Ne supposez pas que c'est juste en train de démarrer blanc! P> p>
Si vous souhaitez effectuer un calcul à long terme sur le thread de l'interface utilisateur, préparez-vous à vos utilisateurs vous donnant beaucoup de commentaires négatifs lorsque votre application déclenche une application ne répondant pas aux erreurs.
Pour empêcher les erreurs "Application ne répondant pas", vous devez exécuter votre calcul dans un
AsynccTask code>
.