2013-07-09 59 views

回答

47

您可以使用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; 
} 

如果您正在使用DialogFragment只是覆蓋onDismiss()

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

+0

謝謝非常! –

+0

神奇但是它沒有得到設備被旋轉的情況 - 這會殺死對話。有任何想法嗎? – Fattie

+3

@JoeBlow當設備被旋轉並且重新創建活動'onCreate'將被調用並且'Bundle savedInstanceState'不會等於'null'。您可以在'onsaveInstanceState'中存儲任何狀態(例如,對話框是否顯示在設備旋轉之前),並在此處引用它。 –

1

@Ken Wolf對這個問題有很好的回答。

只是想補充onDismissListener只在API 17介紹。如果您嘗試支持較低的內容,則可以使用onCancelListener,但這不太好,但會覆蓋backButton和在AlertDialog外部輕敲的情況。

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 
     } 
    }); 
} 
相關問題