天天看点

Android中的日期控件DatePicker和DatePickerDialog

今天早上我写一个程序,需要用到在一个对话框中去显示一个日期匹配器。

当时,我就想,这个还不简单,不就是写一个DatePicker的布局文件,然后再把它部署到AlertDialog中不就好了吗?

当我真的这样做了的时候, 真的可以在一个Dialog中去显示一个DatePicker。如下图:

Android中的日期控件DatePicker和DatePickerDialog

我就开始“兴高彩烈”地去写事件监听部分的代码,可是,这个时候,问题出现了。DatePicker对象为空!

Android中的日期控件DatePicker和DatePickerDialog

这个是我用Log打印出来的信息。

因为一直没找到这到底是为什么。后来,就把书本打开去找原因,在DatePicker的后面几页有一个DatePickerDialog让我眼前一亮。我想是我太笨了,明明有一个现成的DatePickerDialog让我去用,我偏偏选择了一个舍近求远的路的走。下面是用DatePickerDialog写的一个界面:

Android中的日期控件DatePicker和DatePickerDialog

现在我就给出DatePickerDialog的关键代码,因为在Dialog上去部署DatePicker的方法是行不通的,所以就不给代码了,怕是误了别人。。。

Button bn = (Button) findViewById(R.id.button);
        bn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Calendar c = Calendar.getInstance();
				new DatePickerDialog(DatePickerActivity.this, new OnDateSetListener() {
					
					@Override
					public void onDateSet(DatePicker view, int year, int monthOfYear,
							int dayOfMonth) {
						// TODO Auto-generated method stub
						// 进行符合你需要的操作
					}
				}
				// 设置初始日期
				, c.get(Calendar.YEAR)
				, c.get(Calendar.MONTH)
				, c.get(Calendar.DAY_OF_MONTH)).show();
			}
		});      

写这篇博客的目的只是想让看到这篇博客的读者和我自己都能够不要再犯同样的错误了。

熟悉控件很重要!