0

画面がオンのときにメッセージ ダイアログを表示し、向きが変わってもダイアログを保持するようにしました。

 public void onDestroy()
{  //savedMessageDialog id represents the current MessageDialogId


    //dismiss the message dialog if message id displayed. 
    int savedMessageDialogId = MessageDialog.getSavedMessageDialogId();
    if(savedMessageDialogId == MSG_BACK_DATE_WARNING){
        MessageDialog.dismissMessageDialog();
    }
}

My MessageDialog は DialogFragment を拡張するため、この同じコードを onSavedInstancestate に入れましたが、問題なく正常に動作しています 成功!!!

このコードを onDestroy に入れている間、複数のインスタンスを作成していますが、向きを何度も変更しています。また、オフからデバイスをオンにするとダイアログが表示されるため、ダイアログを閉じることにも注意してください。My MessageDialog は内部的に AlertDialog を使用します....その中で

 private static MessageDialog currentMessageDialog = null;

  public static void dismissMessageDialog()
{
    if (MessageDialog != null && MessageDialog.isAdded()) 
    {
        try 
        {
            currentMessageDialog.dismiss();             
        } 
        catch (IllegalStateException e)
        {
            e.printStackTrace();
        }
        finally
        {
            currentMessageDialog = null;
        }
    }
}

onDestroy でダイアログを閉じることができない理由と、 MessageDialog に対して複数のインスタンスが作成される理由を教えてください。良い解決策を教えてください:-)

4

1 に答える 1

0

AndroidManifest.xml ファイルのアクティビティ タグに以下を含めます。

android:configChanges="orientation|screenSize"

これを参照して理解を深めることができます。

于 2013-10-22T12:04:58.173 に答える