2016-07-27 118 views
0

我使用Calendar,我可以设置日期和日期以备将来使用。假设我有一个DatePickerDialog其中规定日期例如15-09-2016,我有一个TimePickerDialog这台每小时例如:22:30Android日历更改时间更改日期至今天

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

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

我检查了谷歌和#1和创建时神情建议问题这个问题,但我没有看到任何东西。

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()); 

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

回答

1

问题是您对TimePickerDatePicker都使用相同的日历对象mCalendarAlarm。尝试使用Calendar类别的两个拾取器的不同对象。

例如:

mCalendarAlarmDatePickerTimePicker

创建新Calendar对象mTimeAlarm如果您有多个初始化mCalendarAlarm = Calendar.getInstance();删除不必要的inits。

+0

我通过删除不必要的'mCalendarAlarm = Calendar.getInstance();'来解决问题。我有多个'mCalendarAlarm = Calendar.getInstance();'init。删除所有这些,我只启动一次“日历”。你的答案帮助我,我连续工作3天(睡觉,吃饭,代码循环),也许我必须休息一下。谢谢。 –

+0

好的。你的问题解决了吗? –