4
나는 한 지점에서 DatePicker 위젯을 사용하는 안드로이드 애플 리케이션에서 일하고 있습니다. 그러나 나는 날짜를 변경하려고 할 때마다 OnDateChange 콜백이 두 번 호출된다는 것을 알았습니다. 새로운 날짜가 모든 장치에서 일관성이 있다면 나는 살 수 있지만 에뮬레이터에서 처음에는 좋은 날짜로 호출되지만 이전 날짜로 두 번째로 호출되었음을 알았습니다.Android : OnDateChange 콜백이 두 번 호출되는 이유는 무엇입니까?
12-18 20:29:12.285: E/MyOnDateChangeListener(5301): [email protected]; 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");
};
, 내가 말하는 문제는 '+'와 '-'버튼을 눌렀을 때뿐입니다.
소스 코드를 게시 하시길 바랍니다. –
소스를 게시하는 것이 좋습니다. 혹시 ondatechange가 실행될 때 datepicker의 값을 설정하는 코드가 있습니다. AFAIK는 사용자 상호 작용으로 인해 두 번 호출해야하는 이유가 없지만 프로그램 방식으로 날짜를 업데이트하면 ondatechange가 실행됩니다. –
안녕하세요, 답변 해 주셔서 감사합니다. 여기에 뭔가 빠졌음을 확신합니다 ...하지만 무엇을 알아낼 수 없습니까? – Ciprian