1
votes

AlertDialog n'apparaîtra pas dans mon application - pourquoi?

J'essaye de créer un AlertDialog lorsqu'une opération échoue. Mais je ne peux pas l'afficher à l'écran, je ne comprends pas pourquoi puisque j'ai fait ce que le tutoriel a montré.

Je sais que displayDialogError est appelé parce que ma sortie affiche la valeur lol. Mais alors rien n'apparaît lorsque le AlertDialog est censé apparaître.

public String lol;

public void doThings(String str) {
    lol = str;
    if (!lol.isEmpty()) {
        System.out.println(lol);
        displayDialogError();
    }
    else
        System.out.println("Request worked");
}

public void displayDialogError() {
    AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle("Alert");
    alertDialog.setMessage("Alert message to be shown");
    alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
    alertDialog.show();
}

AlertDialog alertDialog = new AlertDialog.Builder (this) .create ();

Dans cette ligne, ceci est mon activité actuelle affichée à l'écran.

Merci d'avance de m'aider.


2 commentaires

Ce code est-il dans votre classe d'activité? Avez-vous débogué pour vérifier si displayDialogError () est appelé du tout?


Oui ça s'appelle et oui c'est dans ma classe d'activités :)


3 Réponses :


0
votes

Pouvez-vous essayer le code mis à jour Il peut y avoir un problème de contexte

 public void displayDialogError() {
    AlertDialog alertDialog = new AlertDialog.Builder(YourActivity.this);
    alertDialog.setTitle("Alert");
    alertDialog.setMessage("Alert message to be shown");
    alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
    alertDialog.show();
}


1 commentaires

Salut ! Rien n'a changé, je n'ai toujours rien :( Peut-être que le fait que mon activité soit en plein écran change quelque chose?



0
votes

Essayez ceci:

new AlertDialog.Builder(YourActivity.this).setTitle("Alert")
    .setMessage("Alert message to be shown")
    .setPositiveButton("OK",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        }).show();


1 commentaires

il ne compile pas: erreur: impossible de trouver la méthode de symbole setButton (int, String, )



3
votes

Vous devez appeler create () après avoir défini tous les paramètres de la boîte de dialogue. De plus, je vous recommande de le créer une seule fois au début. Il n'y a aucune raison de recréer la même boîte de dialogue à chaque fois que cette méthode est appelée.

runOnUiThread(new Runnable() {
            @Override
            public void run() {
                alertDialog.show();
            }
        }

Déplacez alertDialog vers une variable de classe ou transmettez-la à votre méthode en tant que paramètre. Et puis montrez-le simplement lorsque cela est nécessaire.

    alertDialog.show();

Et assurez-vous de l'exécuter sur le fil de l'interface utilisateur. Si vous appelez cette méthode à partir d'un autre thread, essayez ceci:

    AlertDialog.Builder builder = new AlertDialog.Builder(<YourActivity>.this);
    builder.setTitle("Alert");
    builder.setMessage("Alert message to be shown");
    builder.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });

    AlertDialog alertDialog = builder.create();


0 commentaires