onCreateDialogをオーバーライドして AlertDialog.Builderでダイアログを作成。
その時に OnCancelListener/OnDismissListenerを呼んでリスナーを登録するも、呼ばれることがなくて困ってしまう。
結論から言うと、これらが呼ばれることはない。
何故かと言えば、DialogFragmentが独自のリスナーで上書きしてしまうから。
どうすればいいか?
DialogFragmentの onCancel(DialogInterface dialog)/onDismiss(DialogInterface dialog)をオーバーライドするようにすればいい。
まぁ わかってしまえば簡単なことなんだけど。
ちなみに onCancel/onDismissをオーバーライドしたらちゃんとスーパークラスの同メソッドも呼び出すこと。
コレをやらないと後始末*1 がされず、見た目うまく動いているように見えても裏で思いも寄らない挙動をすることが。
*1 フラグメントマネージャから DialogFragmentを取り除く等