2013-07-09 12 views
18

Wird der Dialog geschlossen wird, möchte ich etwas für meine background.So ich, wenn der Dialog ein onDismissListener verwendenWoher weiß man, ob ein Dialog in Android geschlossen wird?

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; 
} 

Wenn Sie

+0

Wenn Sie irgendwelche Daten empfangen nicht erwarten, sondern wollen einfach nur um den Dialog wissen ist weg vielleicht kann dies helfen: https://gist.github.com/CrandellWS/ac79d3864a96344d204d869d64fd1922 – CrandellWS

Antwort

47

Sie entlassen wird wissen wollen, tun sind nur mit einer DialogFragment außer Kraft setzen onDismiss()

http://developer.android.com/reference/android/app/DialogFragment.html#onDismiss(android.content.DialogInterface)

+0

Danke sehr viel! –

+0

Fantastisch ABER es wird nicht der Fall der das Gerät gedreht wird - was den Dialog tötet. Irgendwelche Ideen? – Fattie

+3

@JoeBlow Wenn das Gerät gedreht wird und die Aktivität neu erstellt wird, wird 'onCreate' aufgerufen und' Bundle savedInstanceState' wird nicht mit 'null' gleichgesetzt. Sie können jeden Zustand (z. B. einen booleschen Wert, ob das Dialogfeld angezeigt wurde, bevor das Gerät gedreht wurde) in "onsaveInstanceState" speichern und hier darauf verweisen. –

1

@Ken Wolf hat eine gute Antwort auf diese Frage.

wollte nur hinzufügen, dass onDismissListener wurde nur in API 17 eingeführt. Wenn Sie versuchen, etwas niedriger zu unterstützen, können Sie onCancelListener verwenden, was nicht so gut ist, aber Fälle wie BackButton und Tippen außerhalb des AlertDialogs abdeckt.

http://developer.android.com/reference/android/content/DialogInterface.OnCancelListener.html#onCancel(android.content.DialogInterface)

public Dialog createDialog() { 
    Dialog d = new Dialog(this); 
    d.setOnCancelListener(new DialogInterface.OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dialog) { 
      // do something 
     } 
    }); 
} 
Verwandte Themen