
戻るボタン(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("終了してよろしいですか")