En ocasiones se vuelve necesario el seleccionar una fecha u hora en el celular para realizar una actividad. Ej. Programra una alarma en el celular que se activará en cierta fecha y hora especificadas.
En este tutorial aprenderemos a crear un selector de Hora y Fecha en Android Kotlin. Para ello, primero hay que crear dos botones en una actividad que abrirán los selectores de hora y fecha. Para esta aplicación los botones se llaman prjStrtDateCtrl para la fecha y prjStrtTimeCtrl para el tiempo.
Hecho esto, es necesario crear la lógica de la aplicación que desplegará el DatePicker y TimePicker. Para esto, se abre la Actividad con extensión .kt sobre la que se crearon los controles.
//Date picker for StrtProject.
val prjStrtDateCtrl = root.findViewById<Button>(R.id.prjStrtDateCtrl)
prjStrtDateCtrl.setOnClickListener {
val now = Calendar.getInstance()
val datePicker = DatePickerDialog(context, DatePickerDialog.OnDateSetListener
{
view, year, month, dayOfMonth ->
run {
val selectedStrtDate = Calendar.getInstance()
selectedStrtDate.set(Calendar.YEAR, year)
selectedStrtDate.set(Calendar.MONTH, month)
selectedStrtDate.set(Calendar.DAY_OF_MONTH, dayOfMonth)
//Format the selected date.
val strtDate = simpleDateFormat.format(selectedStrtDate.time)
Toast.makeText(root.context, "Date: " + strtDate, Toast.LENGTH_SHORT).show()
}
}, now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH))
datePicker.show()
}
//Time picker for StrtProject.
val prjStrtTimeCtrl = root.findViewById<Button>(R.id.prjStrtTimeCtrl)
prjStrtTimeCtrl.setOnClickListener {
//Get a calendar instance.
val now = Calendar.getInstance()
val timePicker = TimePickerDialog(root.context, TimePickerDialog.OnTimeSetListener { view,
hourOfDay, minute ->
val selectedTime = Calendar.getInstance()
selectedTime.set(Calendar.HOUR_OF_DAY, hourOfDay)
selectedTime.set(Calendar.MINUTE, minute)
Toast.makeText(root.context, "Time: " + simpleTimeFormat.format(selectedTime.time),
Toast.LENGTH_SHORT).show()
},
now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), false)
timePicker.show()
}
¡Y listo! Al ejecutarlo podrás observar el selector de fecha y hora sobre los botones.