83 votes

Comment ajouter une boîte de message avec un bouton 'OK' ?

Je veux afficher une boîte de message avec un bouton OK. J'ai utilisé le code suivant mais il résulte en une erreur de compilation avec argument :

AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(this);
dlgAlert.setMessage("This is an alert with no consequence");
dlgAlert.setTitle("App Title");
dlgAlert.setPositiveButton("OK", null);
dlgAlert.setCancelable(true);
dlgAlert.create().show();

Comment faire pour afficher une boîte de messages dans Android ?

0 votes

D'une certaine manière, votre code a fonctionné tel quel pour moi. C'est peut-être dû aux paramètres de mon kit de développement. <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15" /> a quelque chose à voir avec la raison pour laquelle je n'ai pas eu d'erreur de compilation comme vous le suggérez.

74voto

Paresh Mayani Points 48123

Je pense qu'il y a peut-être un problème parce que vous n'avez pas ajouté un écouteur de clic pour le bouton ok positif.

dlgAlert.setPositiveButton("Ok",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
          //dismiss the dialog  
        }
    });

34voto

Suragch Points 197

Étant donné que dans votre situation, vous ne souhaitez notifier l'utilisateur qu'avec un message court et simple, un message de type Toast permettrait d'améliorer l'expérience des utilisateurs.

Toast.makeText(getApplicationContext(), "Data saved", Toast.LENGTH_LONG).show();

Mise à jour : A Snackbar est désormais recommandé au lieu d'un Toast pour les applications Material Design.

Si votre message est plus long et que vous voulez donner au lecteur le temps de le lire et de le comprendre, vous devez utiliser un fichier de type DialogFragment . (Le documentation recommande actuellement d'envelopper votre AlertDialog dans un fragment plutôt que de l'appeler directement).

Créez une classe qui étend DialogFragment :

public class MyDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        // Use the Builder class for convenient dialog construction
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("App Title");
        builder.setMessage("This is an alert with no consequence");
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                // You don't have to do anything here if you just 
                // want it dismissed when clicked
            }
        });

        // Create the AlertDialog object and return it
        return builder.create();
    }
}

Appelez-la ensuite lorsque vous en avez besoin dans votre activité :

DialogFragment dialog = new MyDialogFragment();
dialog.show(getSupportFragmentManager(), "MyDialogFragmentTag");

Voir aussi

enter image description here

0 votes

Bonne idée pour les toasts. Pour moi, il fallait l'importer : [import Android.widget.Toast ;]

9voto

FerranB Points 9532

Le code se compile bien pour moi. Peut-être avez-vous oublié d'ajouter l'import :

import android.app.AlertDialog;

En tout cas, vous avez un bon tutoriel aquí .

3voto

Ndupza Points 420
@Override
protected Dialog onCreateDialog(int id)
{
    switch(id)
    {
    case 0:
    {               
        return new AlertDialog.Builder(this)
        .setMessage("text here")
        .setPositiveButton("OK", new DialogInterface.OnClickListener() 
        {                   
            @Override
            public void onClick(DialogInterface arg0, int arg1) 
            {
                try
                {

                }//end try
                catch(Exception e)
                {
                    Toast.makeText(getBaseContext(),  "", Toast.LENGTH_LONG).show();
                }//end catch
            }//end onClick()
        }).create();                
    }//end case
  }//end switch
    return null;
}//end onCreateDialog

0 votes

Cette boîte de dialogue ne s'affichera pas sans un appel à alertDialog.show() ;

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