控件内容初始化的时候一般要使日期及时间显示为当前的时间。
//得到当前的时间日期
private void initTime() {
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH) + 1;
mDay = c.get(Calendar.DAY_OF_MONTH);
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
}
private void setDatetime() {
mDate.setText(mYear + "-" + mMonth + "-" + mDay);
mTime.setText(pad(mHour) + ":" + pad(mMinute));
}
通过onCreateDialog、onPrepareDialog、mDateSetListener 、mTimeSetListener 进行设置
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case 1:
return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute,
false);
case 2:
return new DatePickerDialog(this, mDateSetListener, mYear,
mMonth - 1, mDay);
}
return null;
}
//更新弹出对话框控件的显示值
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
switch (id) {
case 1:
((TimePickerDialog) dialog).updateTime(mHour, mMinute);
break;
case 2:
((DatePickerDialog) dialog).updateDate(mYear, mMonth - 1, mDay);
break;
}
}
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
mYear = year;
mMonth = monthOfYear + 1;
mDay = dayOfMonth;
setDatetime();
}
};
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
setDatetime();
}
};
然后通过showDialog(1);showDialog(2);就可以分别将TimePickerDialog和DatePickerDialog显示出来。