Как получить дату в 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();
→ Ссылка