본문 바로가기

IT

DatePickerDialog 에서 java.lang.IllegalArgumentException: current should be >= start and <= end 에러 발생하는 경우

반응형
 이전까지 정상적으로 작동하던 DatePickerDialog에서 IllegalArgumentException이 발생하는 경우가 생겼습니다. 이런 경우가 왜 발생하냐!!! 다른게 아니고 '2월 29일' 때문에 발생하는 것이었습니다.

 위에도 말했듯이 에러가 발생하지 않다가 발생하는 경우는 기초적으로 넣는 날짜가 문제이다.

 예를들어서 2012년의 2월은 29일까지 정상적이다. 그렇다면 nYear = 2012, nMonth = 1, nDay = 29일이 들어갈 것이다. 이렇다면 정상적으로 적용된다. 그렇지만 2011년 2월 29일은 정상적인 날짜가 아니다. 이런 날짜의 형태로 nYear = 2011, nMonth = 1, nDay = 29 로 입력이 된다면 위에서 말한 IllegalArgumentException이 발생한다는 것이다.

 예외사항을 만들지 않는 것이 좋으니 꼭 날짜에 임의적으로 들어가게 할 것이 아니라 Calendar등의 클래스에서 생성된 날짜에서 날짜를 더하거나 빼는 방법을 이용해서 날짜를 수정하고 사용하는 것이 최소한 에러가 발생하는 것을 줄 일 수 있다.

 아래 코드는 onCreateDialog(int n)에서 다이얼로그를 리턴하는 소스이다.

return new DatePickerDialog(LedgerCheck.this, mDateSetListener, nYear, nMonth, nDay);
반응형