画面がオンのときにメッセージ ダイアログを表示し、向きが変わってもダイアログを保持するようにしました。
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 に対して複数のインスタンスが作成される理由を教えてください。良い解決策を教えてください:-)