Как получить дату в calendarView, пытаюсь через setOnDateChangeListener, но ничего не происходит?
Пытаюсь получить дату через setOnDateChangeListener, но ничего не происходит, а должен выходить Toast
var headerLayout: View = layoutInflater.inflate(R.layout.nav_header, null)
calendarView= headerLayout.findViewById(R.id.calendarView)
calendarView.setOnDateChangeListener { view, year, month, dayOfMonth ->
var mStr = ""
var dStr = ""
mStr = if (month + 1 <= 9) "0$month"
else (month + 1).toString()
dStr = if (dayOfMonth <= 9) "0$month"
else (dayOfMonth).toString()
var data = "$year$mStr$dStr"
Toast.makeText(
applicationContext,
"You set $dStr/$mStr/$year",
Toast.LENGTH_SHORT
).show()
}
Ответы (1 шт):
Автор решения: Pavlo Khyzhniak
→ Ссылка
Работать надо с объектом Calendar
// объект для работы с датой и временем
Calendar dateAndTime = Calendar.getInstance();
// установка обработчика изменения/выбора времени
TimePickerDialog.OnTimeSetListener timeSetListener = (TimePicker view, int hourOfDay, int minute)
-> {
// подготовить и вывести новое время в строке отображения
dateAndTime.set(Calendar.HOUR_OF_DAY, hourOfDay);
dateAndTime.set(Calendar.MINUTE, minute);
};
// установка обработчика изменения/выбора даты
private DatePickerDialog.OnDateSetListener dateSetListener =
(DatePicker view, int year, int monthOfYear, int dayOfMonth) -> {
// подготовить и вывести новую дату в строке отображения
dateAndTime.set(Calendar.YEAR, year);
dateAndTime.set(Calendar.MONTH, monthOfYear);
dateAndTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
};
И тогда в любом удобном месте используем или
new DatePickerDialog(
this, // контекст создания окна
dateSetListener, // слушатель события - дата изменена
dateAndTime.get(Calendar.YEAR), // задать год, месяц, и день из объекта-календаря
dateAndTime.get(Calendar.MONTH),
dateAndTime.get(Calendar.DAY_OF_MONTH))
.show(); // показать диалог
Или:
new TimePickerDialog(
this, // контекст создания диалогового окна
timeSetListener, // слушатель события изменение времени в диалоге
dateAndTime.get(Calendar.HOUR_OF_DAY), // час
dateAndTime.get(Calendar.MINUTE), // минута
true) // 24-х часовый формат времени
.show();