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?
5
A
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;
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
@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
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