Android : Membuat Date Picker dan Time Picker Dialog

Bahasa pemrograman : Java
Versi Android Studio : 2.3.3

Kadang aplikasi Android yang dibuat membutuhkan input berupa waktu (tanggal dan jam). Untuk keperluan tersebut dapat dibuat Dialog date picker dan time picker.

Date Picker Dialog

Date picker dialog digunakan untuk menginputkan tanggal.



Untuk membuat dialog date picker, salah satu caranya adalah dengan membuat class DatePickerFragment yang diturunkan dari DialogFragment, code lengkapnya adalah sebagai berikut

public static class DatePickerFragment extends DialogFragment
            implements DatePickerDialog.OnDateSetListener {

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Use the current date as the default date in the picker
            final Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);

            // Create a new instance of DatePickerDialog and return it
            return new DatePickerDialog(getActivity(), this, year, month, day);
        }

        public void onDateSet(DatePicker view, int year, int month, int day) {
            // Do something with the date chosen by the user
            tvDate.setText(String.valueOf(day)+"-"
                    +String.valueOf(month+1)
                    +"-"+String.valueOf(year));
        }
    }

Contoh penggunaan DatePickerFragment adalah dengan memanggilnya di method yang digunakan untuk event click sebuah Button

public void setDate(View view){
        DialogFragment newFragment = new DatePickerFragment();
        newFragment.show(getSupportFragmentManager(), "datePicker");
    }
Pada file xml panggil method setDate di property onClick sebuah Button

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="set date"
    android:onClick="setDate"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:id="@+id/btnDate" />

Time Picker Dialog

Time picker dialog digunakan untuk input data berupa waktu (jam dan menit).

Pembuatan time picker dialog salah satu caranya dengan membuat class TimePickerFragment yang diturunkan dari DialogFragment, code lengkapnya adalah sebagai berikut


public static class TimePickerFragment extends DialogFragment
            implements TimePickerDialog.OnTimeSetListener {

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Use the current time as the default values for the picker
            final Calendar c = Calendar.getInstance();
            int hour = c.get(Calendar.HOUR_OF_DAY);
            int minute = c.get(Calendar.MINUTE);

            // Create a new instance of TimePickerDialog and return it
            return new TimePickerDialog(getActivity(), 
                    this, hour, minute,
                    DateFormat.is24HourFormat(getActivity()));
        }

        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            // jika menit kurangdari 10, tambahkan 0 di depan (agar format menit konsisten 2 digit)
            if (minute < 10){
                tvTime.setText(String.valueOf(hourOfDay)
                        +":0"+String.valueOf(minute));
            } else {
                tvTime.setText(String.valueOf(hourOfDay)
                        +":"+String.valueOf(minute));
            }
        }
    }
Contoh penggunaan TimePickerFragment adalah dengan memanggilnya di method yang digunakan untuk event click sebuah Button

public void setTime(View view){
        DialogFragment newFragment = new TimePickerFragment();
        newFragment.show(getSupportFragmentManager(), "timePicker");
    }
Pada file xml panggil method setTime di property onClick sebuah Button

<Button
    android:id="@+id/btnTime"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="set time"
    android:onClick="setTime"
    android:layout_alignTop="@+id/tvTime"
    android:layout_alignLeft="@+id/btnDate"
    android:layout_alignStart="@+id/btnDate" />

Referensi
https://developer.android.com/guide/topics/ui/controls/pickers.html

Comments