2

これはすでに何度も尋ねられていることを私は知っていますが、答えは私を助けることができませんでした.

特定の瞬間にポップアップするダイアログがあります(メソッド「showServerDialog」を呼び出したとき)。ダイアログが表示され、「negativeButton」を使用してダイアログを閉じてから画面を回転するまで、すべて問題ありません。その後、ダイアログは閉じましたが、再び表示されます。

showDialog(int id) メソッドを使用してダイアログを表示し、onCreateDialog(int id) メソッドをオーバーライドすると、Android がすべてを自動的に処理することを何度も読みました。そして、それはまさに私がやっていることです:

@SuppressWarnings("deprecation")
public void showServerDialog(int position){
    showDialog(REMOVE_SERVER_DIALOG_ID);
}

@SuppressWarnings("deprecation")
@Override
protected Dialog onCreateDialog(int id) {

    switch (id) {
    case REMOVE_SERVER_DIALOG_ID:

        System.out.println("---------------------------------DIALOG");

        // Create AlterDialog
        Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("This will end the activity");
        builder.setCancelable(true);
        builder.setPositiveButton("I agree", new OkOnClickListener());
        builder.setNegativeButton("No, no", new CancelOnClickListener());

        AlertDialog dialog = builder.create();
        dialog.show();
        return dialog;
    }
    return super.onCreateDialog(id);
}

private final class CancelOnClickListener implements DialogInterface.OnClickListener{

    public void onClick(DialogInterface dialog, int which) {
        // Do nothing and just close dialog
    }
}

しかし、通常はダイアログのボタンを使用してダイアログを閉じ、画面を回転させると、再び表示されます。

私はそれで完全に立ち往生しています。助けてください。

4

2 に答える 2

2

だから、最終的に私は答えを見つけました:

OnClickListeners で何もしない代わりに、MyActivity.this.removeDialog(REMOVE_SERVER_DIALOG_ID); を呼び出す必要があります。

却下しない!これはうまくいきます!

于 2013-06-01T14:16:10.360 に答える
-2

同じ問題がありましたが、私の次の行でこれを修正しましたmanifest.xml

        <activity 
        ...
        android:configChanges="orientation|screenSize|keyboardHidden"
        />

あなたはこれを試すことができます:)

于 2013-06-01T14:01:36.817 に答える