2012-03-18 33 views
5

Estoy convirtiendo mi aplicación Android para usar fragmentos. Previamente, tuve una actividad que ahora es un fragmento. Por lo tanto, este código ya no se puede utilizar:Mostrar diálogo de confirmación en el fragmento

showDialog(CONFIRM_ID); 
// ... 
@Override 
public Dialog onCreateDialog(int id) { 
    // Create the confirmation dialog... 
} 

Desde dentro del objeto Fragment, necesito mostrar un diálogo de confirmación que después de la confirmación me lanza de nuevo al objeto de actualización de estado.

E.g.

  1. Dentro fragmento X.
  2. diálogo Mostrar confirmación.
  3. Si "sí" actualización de la interfaz de usuario para X.

¿Cómo puedo lograr esto? Proporcione código de muestra de trabajo.

Respuesta

9

Usted puede simplemente crear sus diálogos (AlertDialog) utilizando el código como se muestra aquí: http://developer.android.com/guide/topics/ui/dialogs.html#AlertDialog

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setMessage("Are you sure you want to exit?") 
     .setCancelable(false) 
     .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       MyActivity.this.finish(); 
      } 
     }) 
     .setNegativeButton("No", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
      } 
     }); 
AlertDialog alert = builder.create(); 
alert.show(); 

Si necesita crear diálogos con botones que no descartan inmediatamente el diálogo en sí se puede ver mi respuesta aquí : How to prevent a dialog from closing when a button is clicked

+0

Gracias. ¡Esto será suficiente! (Pero sospecho que la mejor solución es usar 'DialogFragment' y de alguna manera propagar el resultado al fragmento de origen). – l33t

0
  AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());  
     builder.setTitle("Your Title"); 
     builder.setMessage("Your Dialog Message"); 
     builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
        //TODO 
        dialog.dismiss(); 
      } 
     }); 
     builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
        //TODO 
        dialog.dismiss(); 
      } 
     }); 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
Cuestiones relacionadas