DialogFragmentの外部タッチについて(Kotlin)
- 2020.04.27
- Android

API13以降、Activity.showDialogが非推奨となっているため(簡単で便利だけど)代わりにDialogFragmentを利用しています。
このクラス、Honeycomb以降だとデフォルトだと外部タッチでダイアログが閉じてしまいます。
AlertDialog.Builder.setCancelable(false)を使っても効果なしでつまずきましたが試行錯誤の
上解決できたためその方法を紹介します。
ダイアログ表示サンプル
以下のようにDialogFragmentを継承した汎用クラスを作成しました。
結論から書くとDialogFragment自身(this)に設定してあげれば良いわけです。
Fragment内にDIalogを生成しているようなものなので内部で外部の設定をしても意味はない
って考えると当たり前にも感じますね…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
@SuppressLint("ValidFragment") class DialogFragmentDemo() : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val builder = AlertDialog.Builder(activity) builder.setView(R.layout.fragment_dialog) .setMessage("計測中...") .setPositiveButton("OK") { dialog, id -> println("dialog:$dialog which:$id") } .setNegativeButton("キャンセル") { dialog, id -> println("dialog:$dialog which:$id") } .setTitle("") //効かない // .setCancelable(false) //これでOK this.isCancelable = false return builder.create() } } |
以上です。
-
前の記事
DiscordでBotを作成する(導入編) 2020.04.26
-
次の記事
Raspberry PiからTwitterにツイートしてみる(Sambaサーバーの構築) 2020.07.30