TimePickerDialog和DatePickerDialog使用及问题解决
来源:互联网 发布:剑灵女帝捏脸数据 编辑:程序博客网 时间:2024/05/16 02:36
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ButterKnife.bind(this); calendar = Calendar.getInstance(); mYear = calendar.get(Calendar.YEAR); mMonthOfYear = calendar.get(Calendar.MONTH); mDayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); hourOfDay = calendar.get(Calendar.HOUR_OF_DAY); minute = calendar.get(Calendar.MINUTE); date.setText(mYear + "-" + (mMonthOfYear + 1) + "-" + mDayOfMonth); time.setText(hourOfDay + ":" + minute); }
/** * 实例化一个DatePickerDialog的对象 * 第二个参数是一个DatePickerDialog.OnDateSetListener匿名内部类,当用户选择好日期点击done会调用里面的onDateSet方法 */ private void showDateDialog() { DatePickerDialog datePickerDialog = new DatePickerDialog(AddMeetingActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { date.setText(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth); mYear = year; mMonthOfYear = monthOfYear; mDayOfMonth = dayOfMonth; calendar.set(year, monthOfYear, dayOfMonth); checkDate(); } }, mYear, mMonthOfYear, mDayOfMonth); datePickerDialog.show(); }
/** * 实例化一个TimePickerDialog的对象 * 第二个参数是一个TimePickerDialog.OnTimeSetListener匿名内部类,当用户选择好时间后点击done会调用里面的onTimeset方法 */ private void showTimeDialog() { TimePickerDialog timePickerDialog = new TimePickerDialog(AddMeetingActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { time.setText(hourOfDay + ":" + minute); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); calendar.set(Calendar.MINUTE, minute); calendar.set(Calendar.SECOND, 0); // 设为 0 calendar.set(Calendar.MILLISECOND, 0); // 设为 0 calendar.set(mYear, mMonthOfYear, mDayOfMonth); checkDate(); } }, hourOfDay, minute, true); timePickerDialog.show(); }
/** * 检查日期是否符合 */ private void checkDate() { Calendar now = Calendar.getInstance(); LogUtil.Log("date", "now=" + now.getTime()); LogUtil.Log("date", "set=" + calendar.getTime()); if (now.after(calendar)) { Snackbar.make(subject, "会议时间早于当前时间!", Snackbar.LENGTH_LONG).show(); checkDate = false; } else { checkDate = true; } }
以上为正确代码.
我在做这个时遇到一个问题,就是检查时间符合时
checkDate()如果先点的日期后点的时间选择,calendar的日期总会被重置为当前日期.
calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); calendar.set(Calendar.MINUTE, minute); calendar.set(Calendar.SECOND, 0); // 设为 0 calendar.set(Calendar.MILLISECOND, 0); // 设为 0 calendar.set(mYear, mMonthOfYear, mDayOfMonth);正确的做法就是设置好时间后,对calendar重新设置年月日,并且要注意的是,
必须按照上面的顺序设定!否则年月日还是会被重置为当前日期!
0 0
- TimePickerDialog和DatePickerDialog使用及问题解决
- DatePickerDialog和TimePickerDialog使用示例
- Android_使用DatePickerDialog和TimePickerDialog
- android学习--DatePickerDialog和TimePickerDialog的使用
- 使用DatePickerDialog和TimePickerDialog设置时间
- DatePickerDialog和TimePickerDialog的简单使用
- DatePickerDialog、TimePickerDialog的使用
- DatepickerDialog与TimepickerDialog使用
- Android DatePickerDialog和TimePickerDialog
- AnalogClock和TimePickerDialog、DatePickerDialog
- android TimePickerDialog和DatePickerDialog
- <DatePickerDialog>和<TimePickerDialog>
- 组件的使用(四)DatePickerDialog和TimePickerDialog的使用
- 使用DatePickerDialog和TimePickerDialog实现日期和时间选择对话框
- Fragment中使用DatePickerDialog、TimePickerDialog
- Android中DatePickerDialog对话框和TimePickerDialog对话框的使用
- 自定义的时钟,DatePickerDialog 和 TimePickerDialog的使用
- Android中DatePickerDialog对话框和TimePickerDialog对话框的使用
- 调整数组顺序使奇数位于偶数前面
- [C++]用变量增长模拟算法运行时间
- Geekband007第七周笔记分享
- 用Python3下载网页图片
- c++中的模板
- TimePickerDialog和DatePickerDialog使用及问题解决
- 292.[LeetCode]Nim Game
- Flume:本地文件到Kafka
- Mybatis学习记录(三)--Mybatis配置文件详解
- activity与fragment通信汇总
- HDU 4622 Reincarnation 后缀自动机
- Intent详解
- (LeetCode 191) Number of 1 Bits
- CLM研究