从名子就可以看出DatePickerDialog 和TimePickerDialog 与DatePicker 和TimePicker 的区别,它们可以在对话框中实现日期和时间的选择。
使用方法很简单。构造出它们的对象,并调用show() 方法将它们显示出来。
new DatePickerDialog(MainActivity.this, new OnDateSetListener(){
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
...
}
}, year, monthOfYear, dayOfMonth).show();
这里用到了DatePickerDialog 的一个构造函数,申明如下
DatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)
第一个参数是应用程序上下文,如果在onCreate() 方法中调用,则填this;如果在其他回调方法中调用,则需要填MainActivity.this。第二个参数是对应的监听器,这里应该使用OnDateSetListener监听。后三个参数用来传入刚开始显示的时间。
TimePIckerDialog的使用方法:
new TimePickerDialog(MainActivity.this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
...
}
}, hour, minute, true).show();
同样,这里用到了TimePIckerDialog的一个构造函数
TimePickerDialog(Context context, OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)
类似的,第一个参数是应用程序上下文,第二个参数是对应的监听器,第三、四个参数用来传入当前时间,最后一个参数是一个布尔量,用来指定是否显示24小时
下面是一个完整的例子:
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.datetimepickerdialogdemo.MainActivity" >
<Button
android:id="@+id/bt_select_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/select_date" />
<Button
android:id="@+id/bt_select_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/select_time" />
</LinearLayout>
MainActivity.java
public class MainActivity extends Activity {
private Button selectDate;
private Button selectTime;
private Calendar calendar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
selectDate = (Button) findViewById(R.id.bt_select_date);
selectTime = (Button) findViewById(R.id.bt_select_time);
calendar = Calendar.getInstance();
selectDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new DatePickerDialog(MainActivity.this, new OnDateSetListener(){
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
setTitle(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
}
}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
selectTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new TimePickerDialog(MainActivity.this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
setTitle(hourOfDay + ":" + minute);
}
}, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true).show();
}
});
}
}
效果如下: