DatePickerを使うとカレンダーを表示して日付の選択画面を出すことができます。

まずは表示するときに現在の日付を選択するようにしたダイアログのクラスを作成します。
class DatePickerFragment : DialogFragment(), DatePickerDialog.OnDateSetListener {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Use the current date as the default date in the picker
val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
// 第二引数に注意!!!!!!!!!!!!!!Activityを指定しています。
return DatePickerDialog(requireContext(), activity as MainActivity, year, month, day)
}
override fun onDateSet(view: DatePicker, year: Int, month: Int, day: Int) {
// Do something with the date chosen by the user
}
}
onDateSetはユーザが選択したときに呼ばれる関数ですが空欄にします。
この中でデータを取得してもActivityで活用できないからです。
Activityで活用するには、Activityでも同様に:の後にDatePickerDialog.OnDateSetListenerを継承します。
class MainActivity : AppCompatActivity() ,DatePickerDialog.OnDateSetListener{
var mYear = 0
var mMonth = 0
var mDateOfMonth = 0
:
override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
mYear = year
mMonth = month
mDateOfMonth = dayOfMonth
binding.tvDate.text = "${mYear}年${mMonth + 1}月${mDateOfMonth}日"
}
時間を指定するのはTimePickerですが、全く同じ実装でできます。