AlertDialog onDismiss未被屏幕旋转调用

时间:2012-10-28 17:49:14

标签: android screen alertdialog screen-rotation

我有一个AlerDialog,想要做一些清理工作(例如发布MediaPlayer)。所以我添加了一个解雇听众。

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中的错误吗?

1 个答案:

答案 0 :(得分:0)

以下是快速解决方法:

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

了解如果您使用Activity#showDialog()打开对话框,则会发生这种情况。 (我猜您使用的是m_dialog.show(),所以我的建议是使用showDialog()或升级到碎片。)