选择日期,调用系统的时间弹窗DatePickerDialog

查看了API,不管是取消还是确定,其点击事件都会进入到tryNotifyDateSet().则onDateSet()方法里。

测试时发现有些手机在进行取消操作时日期也会选定了。。。所以为了解决取消时不选择日期,自定义日期选择器MyDatePickerDialog,继承DatePickerDialog,重写onStop()方法。注释掉里面的父类方法,父类的onStop()里也是调用tryNotifyDateSet()方法的。屏蔽掉后就能得到所要的了


我把这个日期弹窗抽取出来做公共类,可以在任何界面调用


首先写一个接口,用来回调所选择的日期
public interface DateDialogCallBack {

	public void getDate(String date);
}
创建一个公共类,在里面写个日期弹窗的方法,日期以20015-09-12的形式记录下来用接口回调,每次调用此方法时只要传context,弹窗的title,还有接口就行了

public class CommonUtils{
    /**
	 * 
	 * @param context
	 * @param titleText
	 *            弹窗的标题
	 * @param callBack
	 *            回调接口,所需要的数据做调用
	 */
	public static void showAddDateDialog(Context context, String titleText,
			final DateDialogCallBack callBack) {
		final Calendar c = Calendar.getInstance();
		MyDatePickerDialog dialog = new MyDatePickerDialog(context,
				new DatePickerDialog.OnDateSetListener() {
					@Override
					public void onDateSet(DatePicker view, int year,
							int monthOfYear, int dayOfMonth) {
						c.set(year, monthOfYear, dayOfMonth);
						String date = (String) DateFormat.format("yyyy-MM-dd",
								c);
						callBack.getDate(date);
					}
				}, c.get(Calendar.YEAR), c.get(Calendar.MONTH),
				c.get(Calendar.DAY_OF_MONTH));
		dialog.setTitle(titleText);
		dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
					}
				});
		dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", dialog);
		dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
			@Override
			public boolean onKey(DialogInterface dialog, int keyCode,
					KeyEvent event) {
				return true;
			}
		});
		dialog.show();
	}

}




                                                                             

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值