가상세계

안드로이드 DatePicker의 OnDateChangedListener가 동작하지 않을 때

eel 2015. 11. 5. 15:09

안드로이드에서 DatePicker를 다이얼로그 없이 사용하려다 문제가 생겨 해결하게 되었다.

DatePicker는 크게 두 가지로 나뉜다고 생각하는데, 그 분기점이 5.0 이다.

5.0 이전에는 위아래에 삼각형 버튼이 있는 스피너를 통해 년/월/일 을 조정했는데, 이후부터는 달력에서 날짜를 직접 선택하는 방법으로 바뀌었다.

 

내가 가진 문제는 DatePicker 를 다이얼로그 없이 사용했을 때 5.0 이상의 버전에서 날짜 선택에 대한 이벤트가 일어나지 않는다는 것이었다.

찾아보니 머티리얼 테마가 적용되는 롤리팝 버전부터는 OnDateChangedListener 함수가 제대로 적용되지 않는다고 한다.

하지만 방법은 있다. 롤리팝 이후에 나온 버전에서도 스피너를 이용하여 날짜를 선택하게 하는 것이다.

기존의 자바 코드는 그대로 두고 Datepicker에 대해 설명된 xml 레이아웃에 다음과 같은 옵션 하나를 써주면 된다.

android:datePickerMode="spinner"

그러면 다이얼로그를 쓰지 않고 기존의 코드를 사용할 수 있다. 대신 깔끔한(?) 머티리얼 UI는 사용할 수 없겠지만..

 

원본 글 : http://stackoverflow.com/questions/31609777/ondatechanged-is-not-called-in-date-picker-android-lollipop