戻るボタン(Backキー)を押した場合に確認ダイアログを表示する方法です。
いきなりではありますが、サンプルコードを。
public class MainActivity extends AppCompatActivity { AlertDialog alertDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onBackPressed() { alertDialog = new AlertDialog.Builder(MainActivity.this) .setTitle("確認") .setMessage("終了してよろしいですか") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { finish(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { alertDialog.dismiss(); } }).show(); } }
Backキーを押した際に、アラーとダイアログを作成し表示します。Yesならばfinish。No,ならば代やログを非表示にしました。
alertDialog.dismiss()によってダイアログを閉じます。実際はこれはなくても動くのですが、しっかり明示的に閉じておくべきでしょう。この方法はなんとなく違和感(alertDialogの中にalertDialog.dismiss??)を感じるかもしれませんが、問題ありません。
タスクからも消してしまう場合はfinish()ではなく、
@Override public void onClick(DialogInterface dialogInterface, int i) { moveTaskToBack(true); }
とします。
ダイアログ領域外のタップを無効化する
BuilderにおいおてsetCancelable(false)を設定することで、ダイアログ領域の外側のタップを無効にすることができます。
alertDialog = new AlertDialog.Builder(MainActivity.this) .setCancelable(false) .setTitle("確認") .setMessage("終了してよろしいですか")