web-dev-qa-db-fra.com

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

Je souhaite afficher une boîte de message avec un bouton OK. J'ai utilisé le code suivant, mais il en résulte une erreur de compilation avec un 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 dois-je afficher une boîte de message sous Android?

77
Rajkumar Reddy

Je pense qu'il est possible que vous n'ayez pas ajouté le programme d'écoute de clic pour le bouton positif.

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

Étant donné que dans votre situation, vous souhaitez uniquement notifier l'utilisateur avec un message court et simple, un Toast améliorerait l'expérience utilisateur.

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

Mise à jour: Un barre de coupe est recommandé maintenant au lieu d'un Toast pour les applications de conception de matériaux.

Si vous souhaitez donner au lecteur le temps de lire et de comprendre un message plus long, utilisez un DialogFragment. (La documentation recommande actuellement de placer votre AlertDialog dans un fragment plutôt que de l'appeler directement.)

Faites 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();
    }
}

Puis appelez-le quand vous en avez besoin dans votre activité:

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

Voir également

enter image description here

28
Suragch

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

import Android.app.AlertDialog;

Quoi qu'il en soit, vous avez un bon tutoriel ici .

9
FerranB
@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
3
Ndupza