2016-07-27 130 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

好的。你的問題解決了嗎? –