AlertDialog

AlertDialogの基本形と表示例


タイトル + メッセージ + OKボタン

AlertDialog.Builder(context)
    .setTitle("Title")
    .setMessage("Message")
    .setPositiveButton("OK", null)
    .show()
  • タイトル、メッセージ、ボタンの文言をセットし、ダイアログを表示
  • ボタンタップ時のコールバックアクションは無し(null)

f:id:komattin:20190916134739p:plain


タイトル + メッセージ + OKボタン + Cancelボタン

AlertDialog.Builder(context)
    .setTitle("Title")
    .setMessage("Message")
    .setPositiveButton("OK", null)
    .setNegativeButton("Cancel", null)
    .show()
  • タイトル、メッセージ、ボタンの文言(OK / Cancel)をセットし、ダイアログを表示
  • ボタンタップ時のコールバックアクションは無し(null)

f:id:komattin:20190916135425p:plain


タイトル + メッセージ + ボタン3つ

AlertDialog.Builder(context)
    .setTitle("Title")
    .setMessage("Message")
    .setPositiveButton("Good", null)
    .setNegativeButton("Bad", null)
    .setNeutralButton("Either", null)
    .show()
  • NeutralButtonは、「どちらでもない」「その他」などの選択肢が必要な場合に追加すると良いでしょう

f:id:komattin:20190916135728p:plain


メッセージのみ

AlertDialog.Builder(context).setMessage("Message").show()

f:id:komattin:20190916135837p:plain



実装のポイント


strings.xmlを参照する

AlertDialog.Builder(context)
    .setTitle(R.string.dialog_title)
    .setMessage(R.string.dialog_message)
    .show()
  • タイトル、メッセージ、ボタンの文言をR.stringで指定できます。


ボタンタップ時のコールバック処理を実装

AlertDialog.Builder(context)
    .setTitle(R.string.dialog_title)
    .setMessage(R.string.dialog_message)
    .setPositiveButton(R.string.dialog_ok) { dialog, which ->
        Toast.makeText(context, "OK", Toast.LENGTH_SHORT).show()
    }
    .show()
  • setPositiveButtonの第二引数はDialogInterface.OnClickListener型となっている為、ラムダ式で記述可能。

f:id:komattin:20190916141847g:plain


キャンセル不可

AlertDialog.Builder(context)
    .setMessage(R.string.dialog_message)
    .setCancelable(false)
    .show()
  • 背景領域をタップしても、◁(バックキー)を押してもキャンセルできなくなります。

f:id:komattin:20190916142644g:plain


キャンセル時のコールバック処理

AlertDialog.Builder(context)
    .setMessage(R.string.dialog_message)
    .setCancelable(true)
    .setOnCancelListener {
        Toast.makeText(context, "Cancel", Toast.LENGTH_SHORT).show()
    }
    .show()

f:id:komattin:20190916143813g:plain


アイコン追加

AlertDialog.Builder(context)
    .setIcon(R.drawable.ic_launcher)
    .setTitle(R.string.dialog_title)
    .setMessage(R.string.dialog_message)
    .setPositiveButton(R.string.dialog_ok, null)
    .show()

f:id:komattin:20190916144136p:plain