Table of Contents
アプリでは、何かしらの処理を行う前に、ユーザーの誤操作でないことを確認するためのダイアログを表示することがよくあります。
ダイアログは、ユーザーによる意思決定や追加情報の入力用に表示される小さなウィンドウです。ダイアログは全画面に表示されることはなく、通常はユーザーが処理を続ける前にアクションを起こす必要があるモーダル イベントに使用されます。
ダイアログ | Android Developers
今回は Kotlin で「OK」と「キャンセル」の2つのボタンを持つダイアログ(AlertDialog)を作成する方法を紹介します。
ダイアログを表示するサンプル
アプリを起動すると以下のようなダイアログを表示するサンプルアプリを作ってみます。
OKを押すと Toast で押されたことを表すメッセージが表示されます。
テンプレートからプロジェクトを新規作成してできる Kotlin のソースコード(MainActivity.kt)を以下のように書き換えて下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package パッケージ名 import android.content.DialogInterface import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.support.v7.app.AlertDialog import android.widget.Toast class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super .onCreate(savedInstanceState) setContentView(R.layout.activity_main) // ダイアログを作成して表示 AlertDialog.Builder( this ).apply { setTitle( "Title" ) setMessage( "Message" ) setPositiveButton( "OK" , DialogInterface.OnClickListener { _, _ -> // OKをタップしたときの処理 Toast.makeText(context, "Dialog OK" , Toast.LENGTH_LONG).show() }) setNegativeButton( "Cancel" , null ) show() } } } |
サンプルのプログラムについて
ダイアログの表示には android.support.v7.app.AppCompatActivity をインポートする必要があります。
1 | import android.support.v7.app.AppCompatActivity |
ダイアログの本体は AlertDialog.Builder によって作られます。
1 | AlertDialog.Builder(context) |
Java では、これを一時変数に代入して、タイトルを設定するメソッド setTitle や本文を表示するメソッド setMessage にアクセスしていましたが、Kotlin では apply を使用することで、上記のように簡潔に書くことができます。
ダイアログのボタンのイベントは setPositiveButton と setNegativeButton の第二引数で設定します。イベントリスナーの定義は以下の通りです。
1 2 3 | DialogInterface.OnClickListener { dialogInterface, i -> // ボタンがタップされたときの処理 } |
今回のサンプルでは、イベントリスナーの引数をどちらとも使用していませんのでアンダースコア(_)で省略しています。
キャンセルのときの動作が特にない場合は setNegativeButton の第二引数を null にします。
ダイアログの設定が全て完了したら show() によってダイアログを画面に表示します。
おしまい
以上がAndroidにおいて、ボタンを2つ持つシンプルなダイアログを作成する方法です。
自作のXMLレイアウトを指定することで、テキストエリアなどのUI要素を設定したダイアログを表示することも可能です。
ピンバック: [Kotlin] XMLレイアウトからテキストを取得するダイアログを作成 - JoyPlotドキュメント