hyoromoのブログ

最近はVRSNS向けに作ったものについて書いています

ProgressDialogでバックボタンが押されたときの制御方法

Dialog表示中にバックボタンが押されると。Dialogが消え、Dialogを起動させたActivityが表示されます。
それが意図しない動作の場合は制御するプログラムを組まなくてはなりません。
今回はバックボタンが押されたときの制御方法を調べたので書き残します。

バックボタンを無効にさせる

早い話がバックボタン無効化させれば良いのです。

ProgressDialog#setCancelable(falase)

バックボタン押下時のハンドリングを書く

単にバックボタンを押せなくするだけではダメな場合があります。
Androidアプリの動作として「バックボタン = 一つ前に戻る」となっており、この挙動をアプリ毎に変えたくありません。
そこでバックボタン押下時のハンドリング自分で書けば良いのです。

ProgressDialog#setOnCancelListener(new OnCancelListener() {
    @Override
    public void onCancel(DialogInterface dialog) {
        // ここに好きなハンドリングを書く。例えば finish() を呼んでアプリを終わらせてあげてもいいよね。
    }
});

まとめ

dismissされたときのリスナーなどもあるので、ここに上げた以外の方法でも同様の処理は可能そうです。
ユーザーへの分かりやすさを配慮しつつ、楽な方法でコーディングしてみよう!