Android Kotlin ダイアログを実装する
ダイアログを実装する手続き
ダイアログの基礎知識
ダイアログ | Android デベロッパー | Android Developers
ダイアログを利用する場合には、基本的にAlertDialog, DatePickerDialog, TimePickerDialogを使い実装する。
ダイアログをそのまま継承して作成するのではなく、DialogFragmentクラスを継承し、onCreateDialogメソッドをオーバーライドしてDialogをビルドする手続きとなる。
アラートダイアログの構成要素
- タイトル
- コンテンツエリア
- アクションボタン
ダイアログを描画する手順
- ダイアログを表示するするためのダイアログフラグメントのクラスを定義する。
- ダイアログを現アクティビティで生成し、表示する
その他の方法として、作成したレイアウトファイルをダイアログとして表示する方法も存在する。
ダイアログフラグメントのクラスの定義
ここで記述するクラスをインスタンス化すると、そのまま画面に描画される。 言わばダイアログフラグメントクラスの継承は、ダイアログの設計と同じ意味を持つ。
package com.example.accountmanager_test import android.app.Activity import android.app.AlertDialog import android.app.Dialog import android.content.DialogInterface import android.os.Bundle import androidx.fragment.app.DialogFragment //ダイアログフラグメントクラスを継承する class SelectUserDialogFragment:DialogFragment(){ //ダイアログの設計はonCreateDialogメソッドをオーバーライドする override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val builder = AlertDialog.Builder(activity) //タイトルの設定 builder.setTitle("ログインするユーザーを選んでください") //ログインボタンの設定 builder.setPositiveButton("Log in this user", DialogButtonClickListener()) val dialog = builder.create() return dialog } private inner class DialogButtonClickListener:DialogInterface.OnClickListener{ override fun onClick(dialog: DialogInterface?, which: Int) { println("ダイアログのtest") } } }
ダイアログを現アクティビティで生成し、表示する
ダイアログを描画するのは、ダイアログフラグメントインスタンスを生成し、show()メソッドを使うだけで良い。
//ダイアログフラグメントを表示させるだけ val testDialog = TestDialogFragment() testDialog.show(supportFragmentManager, "タグの内容は適当に... どんな意味があるのかまだわかっていない。")
基本的にボタン等をタップしてonClickListenerやonItemClickListenerでダイアログフラグメントオブジェクトを生成し、表示するロジックを記述する使い方をする。
val btn = findViewById<Button>(R.id.btn_dialog) btn.setOnClickListener{ //ダイアログフラグメントオブジェクトを生成 val testDialog = TestDialogFragment() testDialog.show(supportFragmentManager, "TestDialogFragment") }