1

キャンセルできるものがありAlertDialogます(戻るボタンまたはダイアログの外側をクリックすることにより)。ダイアログがキャンセルされた場合、いくつかの変更を元に戻す必要があるため、いつキャンセルするかを制御する必要があります。

いくつかの関数をオーバーライドするために、 の独自のサブクラスを作成しようとしましたAlertDialog( をオーバーライドする必要があると思いますonContextMenuClosed。正しい関数を見つけるためにいくつかのテストを行いたかったのです)。

ダイアログを作成するために拡張する独自の Builderを作成し、関数AlertDialog.Builderをオーバーライドしたいと考えました。コードcreate()を確認したところ、変数P を使用して必要なデータを取得しましたが、その変数はプライベートであり、ビルダーからアクセスできないため、ダイアログを作成できません。AlertDialog.Builder->create()AlertController.AlertParams

AlertDialogがキャンセルされたかどうかを制御するにはどうすればよいですか? 使用setCancellable(false)はオプションではありません。ユーザーがキャンセルできるようにしてください。

ありがとう!

4

2 に答える 2

5

設定してみてくださいsetOnCancelListener

 dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {    //close the dialog      
        @Override
        public void onCancel(DialogInterface dialog) {
            //do something
        }
    });
于 2013-02-04T09:57:11.380 に答える
1

この方法で onCancelListener を設定する必要があります。

alertDialog.setOnCancelListener(new OnCancelListener() {

        @Override
        public void onCancel(DialogInterface dialog) {
            // YOUR CODE HERE

        }
    });
于 2013-02-04T09:58:38.723 に答える