Android:为什么OnDateChange回调被调用两次?

Android:为什么OnDateChange回调被调用两次?,android,callback,datepicker,Android,Callback,Datepicker,我正在开发一个android应用程序,它在某种程度上使用了DatePicker小部件,但我注意到每次我尝试更改日期时,OnDateChange回调都会被调用两次。 如果新日期在所有设备上都是一致的,我可以接受,但我刚刚注意到,在emulator上,第一次调用的是好日期,第二次调用的是旧日期 这是在回调中打印的日志: 12-18 20:29:12.285: E/MyOnDateChangeListener(5301): android.widget.DatePicker@43da7f90; yea

我正在开发一个android应用程序,它在某种程度上使用了DatePicker小部件,但我注意到每次我尝试更改日期时,OnDateChange回调都会被调用两次。 如果新日期在所有设备上都是一致的,我可以接受,但我刚刚注意到,在emulator上,第一次调用的是好日期,第二次调用的是旧日期

这是在回调中打印的日志:

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");
    };

我忘了提到,如果我在文本字段中写入日期,它是可以的,我所说的问题只是当我点击“+”和“-”按钮时。

我发现了问题。这是因为我的代码。在ListEventsByDate()方法中,我更改了DatePicker下面列表的焦点,这触发了第二个调用

请发布活动的源代码。发布源代码肯定会有帮助。您是否碰巧有一些代码在启动ondatechange时设置日期选择器的值?好吧,没有理由因为用户交互而调用两次,但是当您以编程方式更新启动ondatechange的日期时。嘿,谢谢您的回答。。。我很确定我错过了什么。。。但我就是不明白。。。