82 votes

Empêcher le bouton de retour de fermer une boîte de dialogue

Je tente d'empêcher une boîte de dialogue AlertDialog de se fermer lorsqu'on appuie sur le bouton de retour dans Android. J'ai suivi les deux méthodes populaires dans ce fil, et avec System.out.println, je vois que dans les deux cas le code s'exécute. Cependant, le bouton de retour continue à fermer la boîte de dialogue.

Qu'est-ce que je pourrais faire de mauvais ? En fin de compte, j'essaie d'empêcher le bouton de retour de fermer une boîte de dialogue - il s'agit d'un avertissement qui s'affiche la première fois que l'application est lancée et je ne veux pas que l'utilisateur ait d'autre option que d'appuyer sur le bouton "Accepter" pour que l'application puisse continuer.

1voto

En JQuery Mobile, un popup ajoute un hash à l'URL, le code suivant permet au bouton retour de fermer le popup lorsqu'il est ouvert et de revenir à l'application une fois fermé. Vous pourriez utiliser la même logique pour un framework d'interface utilisateur personnalisé.

@Override
public void onBackPressed() {

    // vérifier si le modal est ouvert #&ui-state=dialog

    if (webView.getVisibility() == View.VISIBLE && webView.getUrl().contains("#&ui-state=dialog")) {
        // ne pas traiter l'action du bouton retour
        if (webView.canGoBack()) {
            webView.goBack();
        }
    } else {
        // traiter l'action du bouton retour
        super.onBackPressed();
    }
}

0voto

Iancu Vlad Points 31

Ajoutez setCancelable(false) pour empêcher le bouton de retour de fermer une boîte de dialogue.

Par exemple :

AlertDialog.Builder builder = AlertDialog.Builder(this)
Dialog dialog = builder.create()
dialog.setCancelable(false)
dialog.setCanceledOnTouchOutside(false)

Cela empêchera l'utilisateur d'annuler la boîte de dialogue lorsqu'il appuie sur le bouton retour ou touche à l'extérieur de la fenêtre de la boîte de dialogue

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X