Я работаю над Android-приложением, которое в точке использует виджет DatePicker, но я заметил, что каждый раз, когда я пытаюсь изменить дату, обратный вызов OnDateChange вызывается дважды. Я мог бы жить с этим, если бы новая дата была согласованной на всех устройствах, но я только что заметил, что на эмуляторе сначала вызывается хорошая дата, а во второй раз со старой датой.Android: почему обратный вызов OnDateChange вызывается дважды?
это журнал печатается в обратном вызове:
12-18 20:29:12.285: E/MyOnDateChangeListener(5301): [email protected]90; year=2011; monthOfYear=11; dayOfMonth=19
12-18 20:29:12.355: E/MyOnDateChangeListener(5301): [email protected]; 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");
};
Я забыл упомянуть, что если я пишу дату в текстовых полях это нормально, проблема, о которой я говорю, - это только когда я нажимаю кнопки «+» и «-».
, пожалуйста, напишите исходный код отверстия для деятельности –
Это определенно поможет опубликовать источник. Есть ли у вас какой-то код, который устанавливает значения datepicker при запуске ondatechange? AFAIK нет никакой причины, что его следует вызывать дважды из-за взаимодействия с пользователем, но когда вы программно обновляете дату, когда будет запущен ondatechange. –
Эй, спасибо за ваши ответы ... Я почти уверен, что здесь что-то не хватает ... но я просто не могу понять, что ... – Ciprian