2010/04/27

[Android Dev.] 날짜/시각 선택 대화상자 사용하기

Android 에서 기본으로 제공하는 날짜와 시각을 선택하는 대화상자를 사용하는 예이다.



날짜선택 대화상자(DatePickerDialog)와 시각선택 대화상자(TimePickerDialog) 는 해당 다이얼로그 생성해서 보여주기만 하면 되는데 이때 사용자가 설정한 날짜나 시각을 반영하기 위해서는 약간의 작업이 필요하다.



두 대화상자의 호출은 크게 차이가 없다. 차이가 있다면 다루는 데이터가 차이가 있어 나타나는 것이다. 대화상자를 생성할 때 사용자가 Set 버튼을 누를때 발생할 이벤트를 처리할 Callback 함수를 지정하여 처리하면 된다.


날짜 및 시각 선택 대화상자 호출 버튼

날짜 및 시각 선택 대화상자 호출 버튼

날짜 선택 대화상자

날짜 선택 대화상자

날짜 선택 대화상자

선택된 날짜 처리 화면




DatePickerDialog 생성자


public  DatePickerDialog  (Context  context,



DatePickerDialog.OnDateSetListener  callBack,


int year, int monthOfYear, int dayOfMonth)







Parameter



context : 선택 대화상자가 실행 될 Context (보통 Activity)



callBack : 사용자가 Set 버튼을 선택 했을 때 처리할 Callback 함수



year : 초기 년도



monthOfYear : 초기 월



dayOfMonth : 초기 날짜





DatePickerDialog 대화 상자를 생성할 때 넘겨주는 Callback 함수는 DatePickerDialog.OnDateSetListener 로 아래와 같은 형태를 하고 있다.



public abstract void  onDateSet  (DatePicker  view,



int year, int monthOfYear, int dayOfMonth)







Parameters



view : The view associated with this listener.



year : 선택된 년도.



monthOfYear : 선택된 월 (0-11)



dayOfMonth : 선택 한 날짜






날짜 및 시각 선택 대화상자 호출 버튼

날짜 및 시각 선택 대화상자 호출 버튼

시각 선택 대화상자

시각 선택 대화상자

시각 선택 대화상자

선택된 시각 설정 화면




TimePickerDialog 생성자



public  TimePickerDialog  (Context  context,



TimePickerDialog.OnTimeSetListener  callBack,
int hourOfDay, int minute, boolean is24HourView)







Parameters



context : 선택 대화상자가 실행 될 Context (보통 Activity)


callBack : 사용자가 Set 버튼을 선택 했을 때 처리할 Callback 함수



hourOfDay : 초기 시간



minute : 초기 분



is24HourView : 24시간 사용 여부





TimePickerDialog 대화 상자를 생성할 때 넘겨주는 Callback 함수는TimePickerDialog.OnTimeSetListener 로 아래와 같은 형태를 하고 있다.



public abstract void  onTimeSet  (TimePicker  view, int hourOfDay, int minute)







Parameters



view : The view associated with this listener.



hourOfDay : 선택 된 시각의 시



minute : 선택 된 시각의 분






TextView tvDate;
Button btnDate;
TextView tvTime;
Button btnTime;

Calendar calDateTime = Calendar.getInstance();

// Date Set Listener
DatePickerDialog.OnDateSetListener dateSetListener =
new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet( DatePicker view, int year, int monthOfYear,
int dayOfMonth )
{
calDateTime.set( Calendar.YEAR, year );
calDateTime.set( Calendar.MONTH, monthOfYear );
calDateTime.set( Calendar.DAY_OF_MONTH, dayOfMonth );

String strDate;
strDate =
Integer.toString( year ) + "/" +
Integer.toString( monthOfYear ) + "/" +
Integer.toString( dayOfMonth );
tvDate.setText( strDate );
}
};

// Time Set Listener
TimePickerDialog.OnTimeSetListener timeSetListener =
new TimePickerDialog.OnTimeSetListener()
{
@Override
public void onTimeSet( TimePicker view, int hourOfDay, int minute )
{
calDateTime.set( Calendar.HOUR_OF_DAY, hourOfDay );
calDateTime.set( Calendar.MINUTE, minute );

String strTime;
strTime =
Integer.toString( hourOfDay ) + ":" +
Integer.toString( minute );
tvTime.setText( strTime );
}
};

:
tvDate = (TextView)findViewById( R.id.TVDate );
btnDate = (Button)findViewById( R.id.BtnDate );
btnDate.setOnClickListener( this );
tvTime = (TextView)findViewById( R.id.TVTime );
btnTime = (Button)findViewById( R.id.BtnTime );
btnTime.setOnClickListener( this );
:
case R.id.BtnDate:
{
// Call Date Picker
new DatePickerDialog(
MyDialog.this,
dateSetListener,
calDateTime.get( Calendar.YEAR ),
calDateTime.get( Calendar.MONTH ),
calDateTime.get( Calendar.DAY_OF_MONTH )
).show();
}
break;

case R.id.BtnTime:
{
// Call Time Picker
new TimePickerDialog(
MyDialog.this,
timeSetListener,
calDateTime.get( Calendar.HOUR ),
calDateTime.get( Calendar.MINUTE ),
true
).show();
}
break;
}
:

Original Post : http://neodreamer-dev.tistory.com/426

No comments :

Post a Comment