¿Cómo agregar un cuadro de mensaje con el botón 'Aceptar'?

81

Quiero mostrar un cuadro de mensaje con un botón Aceptar. Usé el siguiente código pero resulta en un error de compilación con argumento:

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

¿Cómo debo mostrar un cuadro de mensaje en Android?

Rajkumar Reddy
fuente
De alguna manera, su código funcionó como está para mí. Puede ser que la configuración de mi sdk <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15" />tenga algo que ver con eso en cuanto a por qué no recibí ningún error de compilación que está sugiriendo.
RBT

Respuestas:

71

Creo que puede haber un problema de que no ha agregado el oyente de clic para el botón positivo ok.

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

Dado que en su situación solo desea notificar al usuario con un mensaje corto y simple, Toastmejoraría la experiencia del usuario.

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

Actualización: ahora se recomienda una barra de aperitivos en lugar de un brindis por las aplicaciones de diseño de materiales.

Si tiene un mensaje más extenso que desea que el lector tenga tiempo para leer y comprender, debe usar un DialogFragment. (La documentación actualmente recomienda envolver su AlertDialogen un fragmento en lugar de llamarlo directamente).

Haz una clase que se extienda 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();
    }
}

Luego llámelo cuando lo necesite en su actividad:

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

Ver también

ingrese la descripción de la imagen aquí

Suragch
fuente
Gran idea sobre el brindis. Para mí, requirió la importación: [import android.widget.Toast;]
AnthonyVO
9

El código se compila bien para mí. Puede que hayas olvidado agregar la importación:

import android.app.AlertDialog;

De todos modos, tienes un buen tutorial aquí .

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