Android: почему обратный вызов OnDateChange вызывается дважды? - PullRequest
4 голосов
/ 18 декабря 2011

Я работаю над приложением для 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");
    };

Я забыл упомянуть, что если я напишу дату в текстовых полях, товсе в порядке, проблема, о которой я говорю, только когда я нажимаю кнопки «+» и «-».

1 Ответ

0 голосов
/ 05 января 2012

Я нашел проблему.Это было из-за моего кода.В методе ListEventsByDate () я менял фокус на списке под DatePicker, и это вызывало второй вызов!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...