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.
3 Réponses :
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(); }
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?
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();
il ne compile pas: erreur: impossible de trouver la méthode de symbole setButton (int, String,
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();
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 :)