0

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のバグですか?

4

1 に答える 1

0

ここに簡単な修正があります:

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

でダイアログを開いた場合、これが起こることを理解してくださいActivity#showDialog()。(私はあなたがm_dialog.show()代わりに使用していると推測しているので、実際にはshowDialog()Fragments を使用するかアップグレードすることをお勧めします。)

于 2012-10-28T18:46:25.023 に答える