【问题标题】:Android calendar changing time changing date to todayAndroid日历更改时间更改日期到今天
【发布时间】:2016-07-27 20:40:45
【问题描述】:

我正在使用Calendar,我可以设置日期并获取未来的日期。假设我有一个 DatePickerDialog 设置日期,例如 15-09-2016,我有一个 TimePickerDialog 设置小时,例如:22:30

我的问题是当我使用 DatePickerDialog 并将日期设置为:15-09-2016 时没问题。但是,然后我使用TimePickerDialog 并尝试更改时间,Calendar's 日期更改为今天(27-07-2016)。

但如果我先使用TimePickerDialog 然后使用DatePickerDialog 没有问题,我可以设置日期:15-09-2016 22:30

我检查了 Google 和 Stackoverflow,并在创建此问题时查看了建议的问题,但我没有看到任何内容。

我的DatePickerDialog

DatePickerDialog datePickerDialog=
   new DatePickerDialog(thisActivity, new DatePickerDialog.OnDateSetListener() {
       @Override
       public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
          mCalendarAlarm.set(Calendar.YEAR, year);
          mCalendarAlarm.set(Calendar.MONTH, monthOfYear);
          mCalendarAlarm.set(Calendar.DAY_OF_MONTH, dayOfMonth);
          SimpleDateFormat dateformat = new SimpleDateFormat("dd MMM yyyy kk:mm",Locale.getDefault());
          String datetime = dateformat.format(mCalendarAlarm.getTime());
          alarmDate.setText(datetime);
          }}, mCalendarAlarm.get(Calendar.YEAR), mCalendarAlarm.get(Calendar.MONTH),
          mCalendarAlarm.get(Calendar.DAY_OF_MONTH));

datePickerDialog.getDatePicker().setMinDate(mCalendarAlarm.getTimeInMillis());
datePickerDialog.show();

我的TimePickerDialog

TimePickerDialog mTimePicker;
int hour = mCalendarAlarm.get(Calendar.HOUR_OF_DAY);
int minute = mCalendarAlarm.get(Calendar.MINUTE); 
mTimePicker = new TimePickerDialog(thisActivity,mPickerTheme, new TimePickerDialog.OnTimeSetListener() {
   @Override
   public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
       mCalendarAlarm.set(Calendar.HOUR_OF_DAY,selectedHour);
       mCalendarAlarm.set(Calendar.MINUTE,selectedMinute);
       alarmDialogTime.setText(String.format(Locale.getDefault(),"%02d:%02d", selectedHour, selectedMinute));
       }}, hour, minute, true);
mTimePicker.show();

声明Calendar时:

mCalendarAlarm = Calendar.getInstance();
mCalendarAlarm.setTimeZone(TimeZone.getDefault());

那么我该如何解决这个问题,有没有办法或者你们以前遇到过这个问题。感谢您的帮助!

【问题讨论】:

    标签: android datepicker calendar timepicker


    【解决方案1】:

    问题是您对TimePickerDatePicker 使用相同的日历对象mCalendarAlarm。尝试为两个选择器使用 Calendar 类的不同对象。

    例如:

    mCalendarAlarmDatePicker 并创建新的Calendar 对象mTimeAlarmTimePicker

    如果你有多个初始化 mCalendarAlarm = Calendar.getInstance(); 删除不必要的初始化。

    【讨论】:

    • 我通过删除不必要的 mCalendarAlarm = Calendar.getInstance(); 来解决问题。我有多个 mCalendarAlarm = Calendar.getInstance(); init 。删除了所有这些,我只初始化了一次Calendar。你的回答对我有帮助,我连续工作了 3 天(睡觉、吃饭、代码循环),也许我必须休息一下。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    相关资源
    最近更新 更多