안드로이드 다이얼로그 TimePicker, DatePicker



오늘은 어플개발시에 자주쓰이게 되는 다이얼로그중에 날짜와 시간을 관리하라 수 있는 다이얼로그인 DatePicker, TimePicker에 대해서 알아보도록 하겠습니다. 


위의 그림을 보시면 아시겠지만 안드로이드 에서는 사용자가 날짜와 시간을 사용할 수 있도록 미리 만들어 놓은 컨트롤 형태로 제공해 주고 있습니다. 안드로이드에서 제공되는 두가지의 다이얼로그는 년, 월, 일을 선택할 수 있도록 DatePicker를 제공해주며 시, 분, 오전/오후를 선택할 수 있는 TimePicker를 제공해 주고 있습니다. 위의 녀석을 하나하나 직접 만들려면 짜증나지만 이미 만들어서 제공해주고 있으니 간단한 사용법만 익히시면 쉽게 사용이 가능하실 겁니다.


TimePicker 생성하기


TimePicker를 화면에 보여주기 위해서는 DialogFragment를 사용하시면 됩니다.

먼저 DialogFragment클래스를 상속받는 클래스를 만드시고 onCreateDialog() 메소드에서 TimePickerDialog를 리턴하는 형태로 코딩하시면 됩니다.


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) { // Do something with the time chosen by the user } }


TimePicker 보여주기


위와 같이 코딩을 하셨다면 TimePicker를 보여주기위해 DialogFragment클래스 객체를 생성하신 후에 show() 메소드를 호출하시면 됩니다.


먼저 사용자 이벤트를 받을 버튼을 하나 만드시구요.

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:text="@string/pick_time" 
    android:onClick="showTimePickerDialog" />


버튼을 클릭했을대 아래 메소드가 호출되도록 작성하시면 됩니다.

public void showTimePickerDialog(View v) {
    DialogFragment newFragment = new TimePickerFragment();
    newFragment.show(getSupportFragmentManager(), "timePicker");
}


DatePicker 생성하기


DatePicker를 생성하기 위해서는 위에서 작성한 TimePicker를 생성한 방법과 거의 유사합니다. 단지 다른것이 있다라면 생성하는 Fragment가 TimePickerFragment가 아닌 DatePickerFragment라는 것 밖에 없습니다.

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 } }

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:text="@string/pick_date" 
    android:onClick="showDatePickerDialog" />

public void showDatePickerDialog(View v) {
    DialogFragment newFragment = new DatePickerFragment();
    newFragment.show(getSupportFragmentManager(), "datePicker");
}

위의 코드를 보시면 상단에서 언급한 TimePickerFragment와 동일하다는 것을 보실수 있습니다.

크게 문제가 없으시죠?

이상으로 해서 안드로이드에서 기본적으로 제공해주는 안드로이드 다이얼로그 중 안드로이드 DatePicker과 TimePicker에 대해서 알아 보았습니다.


Note 1]

DialogFragment API는 안드로이드 버전 3.0(허니컴) 에서 새로 생성된 라이브러리이기 때문에 3.0 이상 버전에서만 실행하셔야 정상동작하게 됩니다.