Диалоговые окна в Android

По дефолту в Android определены 2 диалоговых окна, позволяющих выбрать дату и время -- это DatePickerDialog и TimePickerDialog. Рассмотрим их работу более подробно.

Кроме установки даты, DatePickerDialog дает возможность обрабатывать выбор даты посредством слушателей OnDateChangedListener и OnDateSetListener. А это уже, в свою очередь, дает возможность применять выбранную дату далее в программном приложении.

Схожим образом работает и TimePickerDialog -- он тоже дает возможность обрабатывать выбор времени посредством слушателей OnTimeChangedListener и OnTimeSetListener.

Однако в процессе работы с этими компонентами следует учитывать, что отсчет месяцев в DatePickerDialog начинается с нуля. Например, январь -- это 0, а декабрь -- 11. Аналогично и отсчет секунд/минут в TimePickerDialog -- он будет осуществляться с 0 до 59, тогда как отсчет часов -- с 0 до 23.

Давайте посмотрим, как DatePickerDialog и TimePickerDialog работают в приложении. Итак, определим в activity_main.xml следующую разметку интерфейса:

У нас определены 2 кнопки для выбора времени и даты, а также текстовое поле, которое отображает выбранные время и дату. Давайте теперь внесем изменения в код MainActivity:

Ключевой класс в нашем случае -- это java.util.Calendar, хранимый в стандартной библиотеке классов Java. При этом в методе setInitialDateTime() мы получаем из экземпляра данного класса число миллисекунд dateAndTime.getTimeInMillis() и посредством форматирования осуществляем вывод на текстовое поле.

Что касается метода setDate(), то он вызывается при нажатии на кнопку и показывает окно для выбора даты. Во время создания окна обработчик выбора даты DatePickerDialog.OnDateSetListener передается объекту этого метода. При этом происходит изменение даты на текстовом поле.

Так же работает и метод setTime(), отображающий окно для выбора времени. Тут объект окна применяет обработчик выбора времени TimePickerDialog.OnTimeSetListener, меняющий время на текстовом поле.

После запуска мы можем нажать на кнопку изменения времени и установить время:

Таким же образом функционирует и окно установки даты:

По материалам https://metanit.com/java/android/.