Se la finestra è respinto, voglio fare qualcosa per il mio background.So Voglio sapere se la finestra è respintoCome sapere se una finestra di dialogo viene chiusa in Android?
risposta
è possibile utilizzare un onDismissListener
http://developer.android.com/reference/android/content/DialogInterface.OnDismissListener.html
public Dialog createDialog() {
Dialog d = new Dialog(this);
d.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(final DialogInterface arg0) {
// do something
}
});
return d;
}
Se si utilizza un solo DialogFragment
ignorare onDismiss()
Grazie molto! –
Fantastico, ma non si ottiene il caso in cui il dispositivo viene ruotato - che uccide il dialogo. Qualche idea? – Fattie
@JoeBlow Quando il dispositivo viene ruotato e viene ricreata l'attività 'onCreate' verrà chiamato e' Bundle savedInstanceState' non sarà uguale a 'null'. È possibile memorizzare qualsiasi stato (ad esempio, un valore booleano che indica se la finestra di dialogo è stata visualizzata prima della rotazione del dispositivo) in 'onsaveInstanceState' e fare riferimento qui. –
@Ken Wolf ha un'ottima risposta a questa domanda.
Volevo solo aggiungere che onDismissListener
è stato introdotto solo in API 17
. Se si sta tentando di supportare qualcosa di inferiore, è possibile utilizzare onCancelListener
, che non è buono ma copre casi come backButton e toccando al di fuori di AlertDialog.
public Dialog createDialog() {
Dialog d = new Dialog(this);
d.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// do something
}
});
}
Se non si prevede di ricevere i dati, ma semplicemente si vuole capire la finestra di dialogo è andato forse questo può aiutare: https://gist.github.com/CrandellWS/ac79d3864a96344d204d869d64fd1922 – CrandellWS