2016-07-27 4 views
0

Я использую Calendar, и я могу установить дату и дату для будущего. Предположим, что у меня есть один DatePickerDialog, который устанавливает дату, например 15-09-2016 и у меня есть один TimePickerDialog, который устанавливает час, например: 22:30Изменение даты смены времени на Android на сегодняшний день

Моя проблема, когда я использую 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()); 

Так как я могу решить эту проблему, есть так или вы, ребята, прежде чем отвечать. Спасибо за помощь !

ответ

1

Вопрос: Вы используете тот же объект календаря mCalendarAlarm как для TimePicker, так и для DatePicker. Попробуйте использовать другой объект класса Calendar для обоих сборщиков.

Например:

mCalendarAlarm для DatePicker и создать новый объект CalendarmTimeAlarm для TimePicker

Если у вас есть несколько инициализации mCalendarAlarm = Calendar.getInstance(); удалить ненужные inits.

+0

Я избил проблему, удалив ненужный 'mCalendarAlarm = Calendar.getInstance();'. У меня было несколько 'mCalendarAlarm = Calendar.getInstance();' init. Удалили все из них, и я запускаю «Календарь» только один раз. Ваш ответ помог мне, я постоянно работаю, как 3 дня (сон, еда, цикл кода), может быть, я должен немного отдохнуть. Благодарю. –

+0

Хорошо. Ваша проблема решена? –

Смежные вопросы