1. ホーム
  2. android

戻るボタンでダイアログボックスを閉じないようにする

2023-08-25 09:09:32

質問

Android で戻るボタンを押したときに AlertDialog ボックスが閉じないようにしようとしています。私は両方の一般的なメソッドに従いました このスレッドにある と、System.out.printlnで、両方のケースでコードが実行されることを確認することができます。しかし、戻るボタン はまだ はダイアログボックスを閉じます。

何か間違ったことをしているのでしょうか。それはアプリを最初に実行したときに表示される免責事項で、アプリを続行するためにユーザーが "Accept" ボタンを押す以外に選択肢がないようにしたいのです。

どのように解決するのですか?

単純に setCancelable() 機能を使用します。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(false);

これは、戻るボタンがダイアログを閉じるのを防ぎますが、"negative" ボタンを使うことを選択した場合にはそのまま残します。


利用規約に同意したくないユーザーはホーム ボタンを押すことができますが、Squonk のコメントを考慮し、ユーザーが利用規約を取り消すことを防ぐための方法を 2 つ紹介します。1 つは単純な "拒否" ボタンで、もう 1 つはダイアログの戻るボタンを上書きするものです。

builder.setNegativeButton("Refuse", new OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
               finish();
           }
       })
       .setOnKeyListener(new OnKeyListener() {
           @Override
           public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
               if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP)
                   finish();
               return false;
           }
       });