この記事では日付を選択するダイアログの表示方法 を紹介します。時刻選択はこちら
>> Java バージョンはこちら
>>さまざまなダイアログの使い方はこちら
開発環境 Android Studio Hedgehog | 2023.1.1 Android Emulator Pixel 3a (API 34) minSdk 21 targetSdk 34
プロジェクトについて MyDialogFragment.kt ファイルがあることを前提に進めていきます。
ファイルの作成方法はダイアログを表示する方法 ① 基本型(Kotlin編) をお読みください。
解説 1. 日付選択ダイアログを表示する MyDialogFragment.kt を開いて、6~11行目のコードを追加します。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MyDialogFragment : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val dialog = activity?.let {
// デフォルトの日付を用意
val c = Calendar.getInstance()
val year = c[Calendar.YEAR]
val month = c[Calendar.MONTH]
val day = c[Calendar.DAY_OF_MONTH]
DatePickerDialog(it, null, year, month, day)
}
return dialog ?: throw IllegalStateException("アクティビティがNullです。")
}
}
View the code on Gist .
6~9行目:デフォルトの日付を用意 最初に選択しておく日付の年月日を用意しています。ここでは現在の年月日にしています。
自由に指定できますが、month(月)は 0〜11 の数値にすること にご注意ください。
例えば 2024年1月1日の日付を選択状態にするには month は 0 になります。
val year = 2024
val month = 0
val day = 1
11行目:ダイアログを作成 先ほど用意した年月日をセットしてダイアログを作成します。
2つ目の引数 null には、日付を選択したら呼ばれるリスナーをセットできます。このコードはこのあと書いていきます。
ここでアプリを実行すると以下のようなダイアログが表示されます。
2. 日付選択後のイベントリスナーを用意 つぎに日付を選択してOKを押すと呼ばれるイベントリスナー を追加します。
ここでは選択した日付を Toast で表示してみます。
1行目の DatePicker~ 部分、12 行目の引数 this 、17~20行目のコードを追加・変更します。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MyDialogFragment : DialogFragment(), DatePickerDialog.OnDateSetListener {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val dialog = activity?.let {
// デフォルトの日付を用意
val c = Calendar.getInstance()
val year = c[Calendar.YEAR]
val month = c[Calendar.MONTH]
val day = c[Calendar.DAY_OF_MONTH]
DatePickerDialog(it, this, year, month, day)
}
return dialog ?: throw IllegalStateException("アクティビティがNullです。")
}
override fun onDateSet(view: DatePicker, year: Int, month: Int, dayOfMonth: Int) {
val msg = "${year}年${(month+1)}月${dayOfMonth}日"
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show()
}
}
View the code on Gist .
17行目:onDateSet メソッド 日付を選択して OK ボタンを押すと呼ばれるメソッドです。
ここでも month(月)は 0〜11 の数値 になるので month+1 として Toast 表示しています。
完成 以上で完成です。
その他のダイアログの使い方は以下の記事をお読みください。
ABOUT ME
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
主な使用言語:Java / Kotlin / PHP
>> 詳しいプロフィール
>> お問い合わせ
>> 書籍を出版しました!
COMMENT
投稿いただいたコメントは管理者の承認後に表示されます。
コードやエラーに関するご質問の場合は、以下の3点
をできるだけ具体的に必ず書いてください。