Я работаю над приложением для Android, которое в данный момент использует виджет DatePicker, но я заметил, что каждый раз, когда я пытаюсь изменить дату, обратный вызов OnDateChange вызывается дважды.Я мог бы жить с этим, если бы новая дата была согласованной на всех устройствах, но я только что заметил, что на эмуляторе первый вызывается с хорошей датой, а второй раз со старой датой.
это журналнапечатано в обратном вызове:
12-18 20:29:12.285: E/MyOnDateChangeListener(5301): android.widget.DatePicker@43da7f90; year=2011; monthOfYear=11; dayOfMonth=19
12-18 20:29:12.355: E/MyOnDateChangeListener(5301): android.widget.DatePicker@43da7f90; year=2011; monthOfYear=11; dayOfMonth=18
Я что-то здесь упускаю?
Обратите внимание, что в журналах с телефона (Nexus S) оба раза у меня появляется новая дата.
Вот слушатель:
public class MyOnDateChangeListener implements OnDateChangedListener {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Log.e("MyOnDateChangeListener", view.toString() + "; year=" + year + "; monthOfYear=" + monthOfYear + "; dayOfMonth=" + dayOfMonth);
Date date = new Date();
date.setDate(dayOfMonth);
date.setMonth(monthOfYear);
date.setYear(year - 1900);
// TODO: modify the list content.
ListEventsByDate(date);
}
}
А вот часть создания / регистрации:
currentDate = new Date();
currentDate.setDate(day);
currentDate.setMonth(month);
currentDate.setYear(year - 1900);
MyOnDateChangeListener onDateChangeListener = new MyOnDateChangeListener();
eventDatePicker.init(year, month, day, onDateChangeListener);
try {
eventDatePicker.setMinDate(currentDate.getTime() - DAY_IN_MILIS);
} catch (Throwable e) {
Log.e("ERR", "no MinDate method available");
};
Я забыл упомянуть, что если я напишу дату в текстовых полях, товсе в порядке, проблема, о которой я говорю, только когда я нажимаю кнопки «+» и «-».