備忘録。
ダイアログの画面外をタッチされた時の処理を書こうと思ってググると、
setOnDismissListenerでいける!というブログを見つけたのでやってみると良く分からん挙動をする。
調べてみると、
http://oboe2uran.hatenablog.com/entry/2014/02/19/120653
setOnDismissListenerやsetOnCancelListenerは自分で書いてはいけないらしい。
代わりにonDismissやonCancelをOverrideすれば良いらしい。
ここまで来て、DismissとCancelの違いってなんぞ?って思って調べたら、
https://stackoverflow.com/questions/3125647/what-is-the-difference-between-a-dialog-being-dismissed-or-canceled-in-android
onDismissはOKボタンを押そうがキャンセルボタンを押そうがはたまたBackキーで戻ろうが画面外をタッチしようが、要はダイアログが終了するときに必ず呼ばれるらしい。
一方でonCancelは画面外タッチやBackキーと言ったボタン以外の(初心者開発者にとっては)非正規な動きでダイアログを閉じたときに呼ばれるらしい。
終了時、常にしたい処理はonDismissで、
イレギュラー対応はonCancelで書けば良いみたい。
なるほど。