DatePickerDialog、TimePickerDialog(日期和时间对话框)
创建步骤如下:
1、调用Activity的onCreateDialog()方法创建对话框。
2、分别在OnDateSetListener的onDateSet()方法和OnTimeSetListener的onTimeSet()方法中更改日期和时间。
3、调用Activity的showDialog()显示对话框。(当系统调用showDialog时,会根据ID去onCreateDialog中查找对应的对话框)
package com.jwt.chp04;
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
public class DateTimeActivity extends Activity {
private TextView lblShow;
private Button btnDate;
private Button btnTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_datetime);
lblShow = (TextView) findViewById(R.id.lblDTAShow);
btnDate = (Button) findViewById(R.id.btnDTADatePicker);
btnTime = (Button) findViewById(R.id.btnDTATimePicker);
btnDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialog(0);// 注意此处与onCreateDialog的关系
}
});
btnTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialog(1);// 注意此处与onCreateDialog的关系
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.date_time, menu);
return true;
}
// onCreateDialog与showDialog是对应的,系统遇到了showDialog就去找onCreateDialog创建
@Override
protected Dialog onCreateDialog(int id) {
Dialog d = null;
Calendar c = Calendar.getInstance();
switch (id) {
case 0:
d = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
lblShow.setText("您选择了" + year + "-" + monthOfYear
+ "-" + dayOfMonth);
}
}, c.get(Calendar.YEAR), c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH));
break;
case 1:
d = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker arg0, int arg1,
int arg2) {
lblShow.setText("您选择了" + arg1 + ":" + arg2);
}
}, c.get(Calendar.HOUR), c.get(Calendar.MONDAY), false);
break;
}
return d;
}
}