7

アクティビティにアラートダイアログがあり、ユーザーがダイアログの外側をクリックしてアラートを閉じることができないようにします。私の研究(このように)に基づいて、私は方法を見つけましsetCanceledOnTouchOutside(false);た。ただし、アプリケーションで使用できず、このメソッドを使用しているときにダイアログを閉じることができます。

これは私のコードです:

private AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setCanceledOnTouchOutside(false);
alertDialog.setTitle("");
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
        switch (intAlertAction) {
            case 1:
            case 2:
            case 3:
            default:
        }
}
});

任意の提案をいただければ幸いです。

4

4 に答える 4

29

setCanceledOnTouchOutsideダイアログの外側をクリックすることによってのみ却下を防ぎます。ただし、たとえば戻るボタンを使用して閉じることはできます。

ダイアログをキャンセルできないようにする場合は、dialog.setCancelable(false)

私はあなたの(修正された)コードをテストしましたが、期待どおりに機能します。ユーザーがダイアログをクリックしたときにダイアログを閉じることはできません。それを試してみてください:

    AlertDialog alertDialog;
    alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setCanceledOnTouchOutside(false);
    alertDialog.setTitle("");
    alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                }
            });
    alertDialog.show();
于 2012-11-23T10:03:54.620 に答える
7

これは興味深い質問であり、私はあなたの答えを知っていると思います。

私はさまざまなプラットフォームでアプリケーションをテストしてきましたが、それらの間に小さな違いがあることに気づきました。アンドロイド4.0より上では、トーストメッセージに触れると、それは単に消えます。ダイアログ(およびAlertDialogs)でも同じだと思います。触れると単に「消える」(しかし、それは消えない!-ただ見ることができない)。

お役に立てば幸いです。

于 2012-11-26T14:59:17.093 に答える
3

追加dialog.setCancelable(false)するだけで、戻るボタンが無効になります。

于 2016-05-05T07:50:43.833 に答える
2

例を追加setCancelable(false)してくださいAlertDialog

AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setCanceledOnTouchOutside(false);
alertDialog.setCancelable(false);
alertDialog.setTitle("");
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
            }
        });
alertDialog.show();
于 2012-11-23T11:27:39.307 に答える