Prévenir un bouton de fermeture d'une boîte de dialogue
Je suis en train d'empêcher un AlertDialog case de fermeture en appuyant sur le bouton de retour sur Android. J'ai suivi à la fois des méthodes populaires dans ce fil, et avec le Système.out.println je peux voir que dans les deux cas, le code s'exécute. Toutefois, le bouton de retour encore ferme la boîte de dialogue.
Que pouvais-je fait de mal? En fin de compte je vais essayer d'empêcher le retour du bouton de fermeture d'une boîte de dialogue - c'est un avertissement qui s'affiche la première fois que l'application est exécutée et que je ne veux pas que l'utilisateur dispose d'aucune option mais pour appuyer sur le bouton "Accepter" pour l'application de continuer.
- Si vous avez besoin d'un utilisateur à accepter une licence ou d'un avertissement (ou autre) puis vous DOIT leur permettre de refuser. S'ils cliquent sur le
BACK
bouton puis assurez-vous que votre licence ou de votre boîte de dialogue d'avertissement s'affiche à nouveau la prochaine fois qu'ils commencent à l'application et encore et encore jusqu'à ce qu'ils soit d'accepter ou de supprimer l'application, à partir de leur appareil. Si vous choisissez d'utiliser l'approche proposée par Sam alors vous DOIT fournir un 'Refuser' le bouton, mais puis re-créer la licence/avertissement prochain lancement de l'application. - Je voudrais supprimer une application qui me donne "accepter" comme la seule option... et ne pensez même pas à désactiver le bouton d'accueil!
- L'application peut être fermé au moyen d'appuyer sur le bouton home, mais essentiellement l'application ne peut pas passer l'avertissement si la licence n'est pas accepté. @Squonk, vous mentionner que je doit leur permettre de refuser; est-ce un problème juridique? c'est à dire il y a une loi que le logiciel doit être utilisable (si il a été payé) sans accepter le contrat de licence? n.b. J'ai déjà un "déclin" bouton et en appuyant sur cette pop-up un Toast() en disant que vous devez accepter l'accord de licence pour l'utilisation de l'application. La boîte de dialogue persiste donc jusqu'à accepter est pressé.
- Je ne suis pas un avocat, mais je soupçonne que dans certains pays, il pourrait être considéré comme un problème juridique. Je ne suggère pas que vous permettre aux gens d'utiliser votre application s'ils refusent ou à la baisse de l'avertissement. Tout ce que je dis, c'est que c'est une mauvaise politique, de mauvaises relations avec la clientèle (même si l'application est gratuite) et mauvais pour le UX de verrouillage de quelqu'un. Tout simplement le "déclin" de l'option de fermer l'application et la prochaine fois que l'utilisateur essaie de le démarrer, il présente la même boîte de dialogue. Ne vous contentez pas de popup un
Toast
, de les laisser enfermés et compter sur eux à l'aide de thwHOME
bouton pour sortir.
Vous devez vous connecter pour publier un commentaire.
Simplement utiliser le
setCancelable()
fonctionnalité:Ce qui empêche le bouton de retour à partir de la fermeture de la boîte de dialogue, mais laisse le "négatif" bouton intact si vous avez choisi d'utiliser.
Alors que tout utilisateur qui ne veulent pas accepter vos conditions de service peut pousser le bouton d'accueil, à la lumière de Squonk commentaire, ici, deux de plus de moyens pour les empêcher de "sauvegarde" de l'accord de l'utilisateur. L'un est un simple "Refuser" et l'autre remplace le bouton de retour dans la boîte de dialogue:
DialogFragment
, vous devriez appelersetCancelable
et non sur laDialog
lui-mêmePour empêcher le retour bouton ferme une boîte de Dialogue (sans fonction de l'Activité), juste le code suivant:
WebView
sur mon application. J'ai dû vérifiercanGoBack()
et fermer la boîte de dialogue si c'était faux.Lors de l'utilisation de
DialogFragment
vous aurez besoin de faire appelsetCancelable()
sur le fragment, pas la boîte de dialogue:Appel
dialog.setCancelable()
semblent avoir aucun effet. Il semble queDialogFragment
ne prend pas l'avis de la boîte de dialogue de réglage pour l'annulabilité.Utilisation
setCancelable(false)
Seulement cela a fonctionné pour moi:
Comme vous pouvez le voir, j'ai également ajouté un
dialog.setCanceledOnTouchOutside(false);
ligne de taraudage à l'extérieur de la boîte de dialogue ne porte pas sur qu'il soit fermé.En JQuery Mobile un popup ajoute un hash de l'url, le code suivant permet à l'arrière pour fermer la popup lors de l'ouvrir et de le retourner à l'application lorsqu'elle est fermée. Vous pouvez utiliser la même logique pour une interface utilisateur personnalisée cadre.