2015-06-30 4 views
3

У меня проблема с выбором даты в моем проекте. я получаю сообщение об ошибке:UnsupportedOperationException: CalendarView r

java.lang.UnsupportedOperationException: CalendarView does not exists for the new DatePicker 
      at android.widget.DatePickerCalendarDelegate.getCalendarView(DatePickerCalendarDelegate.java:498) 
      at android.widget.DatePicker.getCalendarView(DatePicker.java:377) 
      at jadezabiore.spot.pl.jadezabiorepl.dialogs.DialogWithCalendar$1.onClick(DialogWithCalendar.java:56) 
      at android.view.View.performClick(View.java:4780) 
      at android.view.View$PerformClick.run(View.java:19866) 
      at android.os.Handler.handleCallback(Handler.java:739) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5254) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

только для lilipop системы. Есть ли способ справиться с этим?

Edit: Это проблематично код:

IDatePickerInFilter act = (IDatePickerInFilter) activity; 
       datePicker.setCalendarViewShown(false); 
       act.getDateDialog(new DateToTimestampConverter().getStringDateFromTimestamp(datePicker.getCalendarView().getDate())); 
+0

Какой у вас код? что вы пробовали? – Onheiron

+0

По умолчанию datePickerMode является spinner, после API 21 вы не можете получить CalendarView, если используете режим spinner. – calvinfly

+0

@calvinfly, так как я могу решить свою проблему? – edi233

ответ

0

Чтобы сэкономить время для других, как я, как уже упоминалось @calvinfly:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { 
    // do something for phones running an SDK before lollipop 
    // e.g. datePicker.getCalendarView() ... 
} else { 
    // Do something for lollipop and above versions 
} 
0

Реальная проблема заключается - как получить выбранная дата с API 21. Предшествующая частота использования заключалась в использовании CalendarView, API 21+, единственный возможный способ, по-видимому, обеспечивает OnDateChangedListener в методе DataPickerinit.

datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() { 
    @Override 
    public void onDateChanged(DatePicker view, 
     int year, int monthOfYear, int dayOfMonth) { 
     // do the date stuff 
    } 
}); 

Сообщение об ошибке также немного слишком загадочно - «новый DatePicker» относится не к новому объекту DatePicker (так что вы могли бы ожидать, чтобы иметь возможность инициализировать вид), но в новой версии DatePicker доступной поскольку API 21 (который выдает ошибку, когда вы запрашиваете CalendarView).

Смежные вопросы