API21 новый DatePicker ShowWeekNumber Crash

Я тестировал свое приложение с новым Android 5.0 (API21), но получал ошибку с CalendarView

Caused by: java.lang.UnsupportedOperationException: CalendarView does not exists for the new DatePicker
   at android.widget.DatePickerCalendarDelegate.getCalendarView(DatePickerCalendarDelegate.java:501)
   at android.widget.DatePicker.getCalendarView(DatePicker.java:365)

Для моего удивления ошибка была не потому, что в NEW API21 DatePicker нет CalendarView, по сути, в API21 отсутствует DatePicker, а только CalendarView.

Ошибка возникла из-за того, что я запретил номера недель в CalendarView

picker.getCalendarView().setShowWeekNumber(false);

Эта команда выдает UnsupportedOperationException, не будет предупреждена больше номеров недели в CalendarView, они просто исчезли, никаких объяснений.

Ответ 1

Я думаю, вы сбиты с толку. ваше требование - "скрыть номер недели" Но на самом деле нет недели Число в наборе даты ни в api21, ни ниже 21

поэтому я предлагаю вам пропустить "picker.getCalendarView(). setShowWeekNumber (false);" и продолжить с остальной частью кода.

Ответ 2

Одна из проблем, которая может вызвать это исключение, заключается в том, что если ваш режим DatePicker android:datePickerMode="calendar", DatePicker.getCalendarView вызовет исключение в post API 21, то для его решения измените режим вашего DatePicker на android:datePickerMode="spinner" и в java вы можете использовать из условий для обработки API больше или равно 21