使用DatePickerDialog和TimePickerDialog实现日期和时间选择对话框

从名子就可以看出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();
			}
		});
		
	}

	
}

效果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值