2012-03-18 13 views
5

Sto convertendo la mia applicazione Android per utilizzare i frammenti. Precedentemente, ho avuto un'attività che ora è un frammento. Quindi, questo codice non può più essere utilizzato:Mostra finestra di dialogo di conferma in Frammento

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

Dalla all'interno dell'oggetto Fragment, ho bisogno di mostrare una finestra di conferma che dopo la conferma mi butta di nuovo all'oggetto per aggiornamento di stato.

E.g.

  1. All'interno frammento X.
  2. Mostra finestra di dialogo di conferma.
  3. Se "sì" aggiornamento dell'interfaccia utente per X.

Come posso fare questo? Si prega di fornire un codice di esempio funzionante.

risposta

9

Si può semplicemente creare le finestre di dialogo (AlertDialog) utilizzando il codice come illustrato di seguito: 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(); 

Se avete bisogno di creare finestre di dialogo con pulsanti che non elimina immediatamente la finestra di per sé si può vedere la mia risposta qui : How to prevent a dialog from closing when a button is clicked

+0

Grazie. Questo sarà sufficiente! (Ma sospetto che la soluzione migliore sia usare 'DialogFragment' e in qualche modo propagare il risultato al frammento originario.) – 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(); 
Problemi correlati