2012-10-28 69 views
0

我有一個AlerDialog並想做一些清理工作(例如發佈MediaPlayer)。所以我加了一個解僱聽衆。AlertDialog onDismiss不被屏幕旋轉調用

m_dialog.setOnCancelListener(new OnCancelListener() 
{ 
    public void onCancel(DialogInterface arg0) 
    { 
     stop(); 
    } 
}); 
m_dialog.setOnDismissListener(new OnDismissListener() 
{ 
    public void onDismiss(DialogInterface dialog) 
    { 
     stop(); 
    } 
}); 

當按下後退按鈕時,這可以正常工作。但是,當屏幕旋轉對話框隱藏,但不重建和onDimiss之前沒有調用。

任何想法,這是在Android 2.3中的錯誤?

回答

0

這裏是速戰速決:

protected void onDestroy() { 
    if(m_dialog.isShowing()) 
     m_dialog.dismiss(); 
    super.onDestroy(); 
} 

理解,這是爲你,如果你Activity#showDialog()打開的對話框會發生什麼。 (我猜你使用m_dialog.show()來代替,所以真的我的建議是使用showDialog()或升級到碎片。)

+0

您好,謝謝但我使用AlerDialog.Builder,因此無法重寫onDestroy。舊設備不支持碎片! – user1781191

+0

'onDestroy()'是Activity中的一個方法,[Support Library](http://developer.android.com/tools/extras/support-library.html)允許Android 1.6(API 4)之後的任何設備使用碎片。 – Sam

+0

好!但是這是一個錯誤還是我誤解了一些東西。我也可以使用傳統的Dialog,只爲此切換片段太多了。但是,謝謝 – user1781191