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