##ダイアログのonDismissメソッドが走らない。
Kotlin勉強中の初学者です。DialogFragmentクラスを継承してAlertDialog.Builderでダイアログを表示させました。ダイアログが閉じるとき(閉じたとき?)に処理を走らせる方法としてonDismissメソッドをオーバーライドすれば良いと知りました。
インナークラスでOnDismissListenerを宣言し、onDismissメソッドをオーバーライド、ダイアログにリスナーをセットしたつもりなんですがなぜかonDismissメソッドが走ってくれません。以下ソースになりますがどこに問題があるでしょうか。何かわかる方が居ましたらご助力いただけると嬉しいです。
CreateDialog部分です。
呼び出し元ははFragmentで作成しておりBuilderに与えるコンテキストはactivityになってます。
Kotlin
1class DialogDeleteCheck: DialogFragment() { 2 @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 3 override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { 4 5 //ダイアログビルダの生成 6 val builder = AlertDialog.Builder(activity) 7 //各stringを格納 8 builder.setTitle(R.string.dialog_title) 9 builder.setMessage(R.string.dialog_msg) 10 builder.setPositiveButton(R.string.dialog_btn_ok,DialogButtonClickListener()) 11 builder.setNegativeButton(R.string.dialog_btn_ng,DialogButtonClickListener()) 12 13 //dismissリスナーセット 14 val dismisslistener = DialogDismissListener() 15 builder.setOnDismissListener(dismisslistener) 16 17 //ダイアログオブジェクトを生成 18 val dialog = builder.create() 19 20 return dialog 21 } 22
DismissListener宣言部分です。
Kotlin
1 /** 2 * dialog終了時 3 */ 4 private inner class DialogDismissListener :DialogInterface.OnDismissListener{ 5 override fun onDismiss(dialog: DialogInterface?) { 6 Log.d("tag","dismiss") 7 //DBから記録を取得するメソッド 8 } 9 }
##試したこと
ブレークポイントを仕込んでみましたが止まりませんでした。ログも意味なしでした。
呼び出し元がFragmentなのがいけないのかと思い、普通のActivityでも試してみましたが同じくonDismissが走りませんでした。
##質問したいこと
onDismissメソッドがなぜ走らないのでしょうか。
何かわかる方がいらっしゃっいましたらよろしくお願いします!!
##環境
Android Studio 4.1.1
AndroidEmulator Nexus_5X_API_28
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/27 11:12
2021/01/27 11:20
2021/01/27 11:26