[Kotlin] 2つのボタンを持つダイアログ(AlertDialog)を表示

2018年1月21日(更新: 2018年4月26日)

アプリでは、何かしらの処理を行う前に、ユーザーの誤操作でないことを確認するためのダイアログを表示することがよくあります。

ダイアログは、ユーザーによる意思決定や追加情報の入力用に表示される小さなウィンドウです。ダイアログは全画面に表示されることはなく、通常はユーザーが処理を続ける前にアクションを起こす必要があるモーダル イベントに使用されます。
ダイアログ | Android Developers

今回は Kotlin で「OK」と「キャンセル」の2つのボタンを持つダイアログ(AlertDialog)を作成する方法を紹介します。

ダイアログを表示するサンプル

アプリを起動すると以下のようなダイアログを表示するサンプルアプリを作ってみます。

ボタンを2つ持つ確認ダイアログを表示するandroidアプリ

OKを押すと Toast で押されたことを表すメッセージが表示されます。

ダイアログのボタンに設定したイベント

テンプレートからプロジェクトを新規作成してできる Kotlin のソースコード(MainActivity.kt)を以下のように書き換えて下さい。

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 をインポートする必要があります。

import android.support.v7.app.AppCompatActivity

ダイアログの本体は AlertDialog.Builder によって作られます。

AlertDialog.Builder(context)

Java では、これを一時変数に代入して、タイトルを設定するメソッド setTitle や本文を表示するメソッド setMessage にアクセスしていましたが、Kotlin では apply を使用することで、上記のように簡潔に書くことができます。

ダイアログのボタンのイベントは setPositiveButtonsetNegativeButton の第二引数で設定します。イベントリスナーの定義は以下の通りです。

DialogInterface.OnClickListener { dialogInterface, i -> 
    // ボタンがタップされたときの処理
}

今回のサンプルでは、イベントリスナーの引数をどちらとも使用していませんのでアンダースコア(_)で省略しています。

キャンセルのときの動作が特にない場合は setNegativeButton の第二引数を null にします。

ダイアログの設定が全て完了したら show() によってダイアログを画面に表示します。

おしまい

以上がAndroidにおいて、ボタンを2つ持つシンプルなダイアログを作成する方法です。

自作のXMLレイアウトを指定することで、テキストエリアなどのUI要素を設定したダイアログを表示することも可能です。

[Kotlin] 2つのボタンを持つダイアログ(AlertDialog)を表示」への1件のフィードバック

  1. ピンバック: [Kotlin] XMLレイアウトからテキストを取得するダイアログを作成 - JoyPlotドキュメント

コメントを残す

メールアドレスが公開されることはありません。