アプリケーションにAlertDialog.Builderが表示されています。画面を回転させると、「アプリケーションがウィンドウをリークしました」というエラーが表示されます。 onPause()イベントでAlertDialogをキャンセルするにはどうすればよいですか? Ad.cancel()のメソッドが表示されません。画面が回転しているときにAlertDialogを取り消します。
更新:作業モデル用のコードが編集されました。
private AlertDialog inputDlg;
...
@Override
protected void onPause()
{
// close dialog if it's showing
if (inputDlg != null)
if (inputDlg.isShowing())
inputDlg.dismiss();
super.onPause();
}
...
private void dlgUserPrompt (Context c)
{
// Set an EditText view to get user input
final EditText input = new EditText (c);
AlertDialog.Builder Ab = new AlertDialog.Builder (this);
Ab.setTitle("title");
Ab.setMessage("I won't explode if you rotate this");
Ab.setView(input);
inputDlg = Ab.show();
}
実際に、AlertDialog.Builderを使用すると、単純な却下方法はありません。 Kurtisの返答を読んだところ、解は実際にはかなり複雑なように見えます。 – wufoo
AlertDialog.Builderのshow()メソッドは、実際にdismissメソッドを持つAlertDialogオブジェクトを返します。あなたの視点で非常に計算集中的なことをしない限り、簡単な解決策であるため、あなたのマニフェストでこれを上書きするのではなく、設定の変更に対してアクティビティをkill /再起動させるだけです。 – Chris
Chrisに感謝します。それは私を軌道に乗せた。コードは上記で更新されました。 – wufoo