2011-12-18 2 views
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"); 
    }; 

, 내가 말하는 문제는 '+'와 '-'버튼을 눌렀을 때뿐입니다.

+0

소스 코드를 게시 하시길 바랍니다. –

+0

소스를 게시하는 것이 좋습니다. 혹시 ondatechange가 실행될 때 datepicker의 값을 설정하는 코드가 있습니다. AFAIK는 사용자 상호 작용으로 인해 두 번 호출해야하는 이유가 없지만 프로그램 방식으로 날짜를 업데이트하면 ondatechange가 실행됩니다. –

+0

안녕하세요, 답변 해 주셔서 감사합니다. 여기에 뭔가 빠졌음을 확신합니다 ...하지만 무엇을 알아낼 수 없습니까? – Ciprian

답변

0

문제점을 발견했습니다. 내 코드 때문 이었어. ListEventsByDate() 메서드에서 DatePicker 아래의 목록에 포커스를 변경하고 두 번째 호출을 트리거했습니다!

관련 문제