我正在开发一个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");
};
我忘了提到如果我在文本字段中写日期就可以了,我正在谈论的问题只有在我点击'+'和' - '按钮时才会出现。
答案 0 :(得分:0)
我发现了问题。这是因为我的代码。在ListEventsByDate()方法中,我将焦点更改为DatePicker下方的列表,并触发了第二次调用!