2012-01-20 13 views
5

Voglio usare l'interfaccia fluida di AlertDialog.Builder ma quando arrivo al punto di aggiungere il mio DismissListener e ShowListener devo uscire e aggiungerlo all'oggetto dialog dopo aver creato il mio create() sul builder. Qualcuno sa perché non sono lì? Non posso estenderlo a causa del membro P privato ... Non è la fine del mondo o qualcosa del genere, sono solo curioso del perché non ci sia.Perché AlertDialog.Builder non ha metodi setOnDismissListener o setOnShowListener?

risposta

1

Dal livello API 17. è possibile utilizzare il metodo setOnDismissListener (DialogInterface.OnDismissListener onDismissListener)

7

Hai provato questo metodo ..

AlertDialog dlg = builder.create(); 
lg.setOnDismissListener(new DialogInterface.OnDismissListener() { 
@Override 
public void onDismiss(final DialogInterface dialog) { 
//Do some work 
} 
}); 
return dlg; 
+1

Sì, ho detto che faccio del componente aggiuntivo dopo il mio .create() chiamata .. Ho preferirei essere in grado di fare: nuovo AlertDialog.Builder (ctx) .setTitle (title) .setMessage (msg) .setPositiveButton (buttonTitle, listener) .setDismissListener (dismissListener) .show() – danb

+1

@danb Lo fai dopo il create() call, ma sull'oggetto Builder? Non funzionerà. create() è come il Builder ti dà un AlertDialog, ma un oggetto Builder non ha alcun metodo per impostare gli ascoltatori su di essi. – LuxuryMode

+2

Il builder ha diversi metodi per impostare gli ascoltatori, ma non i due che ho menzionato. Ha setOnCancelListener, setOnItemSelectedListener e setOnKeyListener .. Sono curioso di sapere perché l'API sembra incompleta. – danb

Problemi correlati