Our Tutorial app
We display a button when the app starts. Pressing the button displays a DatePicker.
The DatePicker displays in a DialogFragment
The user selects a date and presses the Set button which displays the selected date in a Toast message.
The selected date is displayed in a Toast message
The Fragment: Creating the Dialog Fragment
We’re using the support library’s version of a DialogFragment so our app will run on devices running API Level 4 and up.
Make sure that you import the support library’s DialogFragment class
The DialogFragment is a fragment that displays a floating dialog window on top of the activity’s window. It also manages the dialog’s lifecycle for you.
We create a DialogFragment class, MyDatePickerFragment to display our DatePicker. We also implement the OnDateSetListener interface to listen for when the user sets the date.
Implement the OnDateSetListener interface to get the date set by the user
The Dialog: Creating a DatePickerDialog
Use the DialogFragment to display the DatePickerDialog.
We create a DatePickerDialog, setting its initial values to the current day, month and year which we get from a Calendar object.
Get the current day, month and year from the Calendar object
Note the following:
- calendar – our Calendar object representing a specific instance in time
- myDatePicker – a dialog containing a DatePicker. We create the dialog by passing the DatePickerDialog constructor 5 parameters:
- the context in which the dialog should run
- the callback which is used to get notified when the user sets the date
- year – the initial year setting for the DatePicker
- month - the initial month setting for the DatePicker
- day - the initial day setting for the DatePicker
The Listener Interface: Listen for when the user sets the date
We use the OnDateSetListener interface’s onDateSet() method to get the date selected by the user.
Use the onDateSet() method to get the user selected date
Note the following:
- suffix – we use a few arrays and array lists to determine the day’s suffix (e.g. 1st, 2nd, 3rd, 4th) so that for example, if day equals 1 then the suffix will be st, 2 will be nd, etc.
- we display the selected date in a Toast message
- monthsArray[monthOfYear] – we use a String array of months, and the selected month’s value as the array’s index, to get the matching month. Note that the array is indexed from 0 and that the selected month’s returned value is also indexed from 0. So selecting January returns 0 which matches the first item in our array
Showing the Date Picker
The apps only activity, MyActivity activity must extend the FragmentActivity class. Also, remember we’re using the support library so you must make sure that you import the correct classes:
Make sure to import the support library classes
Running the app displays a Button. Pressing the button executes the onClick method declared in the layout, doDatePicker().
Use the DialogFragment’s show() method to display the DatePicker in the DialogFragment
Note the following:
To show the Date Picker, we first create an instance of our DialogFragment, MyDatePickerFragment. Then we call show() to show the fragment.
- show – a convenience method that:
- creates a fragment transaction
- adds the fragment to the transaction (with a tag)
- commits the transaction
- getSupportFragmentManager – returns a fragment manager which enables us to interact with the fragment
- datePicker – the tag name for the fragment which can be used to retrieve the fragment later
Have you seen our Fragment tutorials?
- Dynamic layouts using fragments
- Fragments tutorial. Part 1: The basics
- Fragments, configuration changes and retaining objects
Need to customise the standard Android DatePicker?
Check out these DatePicker libraries. They may have the style and features that you’re looking for!
Derek Brameyer’s android-betterpickers DialogFragments library.
Flavien Laurent’s datetimepicker library.
Jake Wharton’s android-times-square library
I hope that you have found this tutorial helpful.
This project was created using Android Studio.
Are you using Eclipse or another IDE? Here's how you can use this project's Android Studio files.