UnsupportedOperationException:CalendarView r

时间:2015-06-30 07:59:54

标签: android

我的项目中的日期选择器有问题。 我收到错误:

 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系统。有办法解决这个问题吗?

编辑: 这是有问题的代码:

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

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

真正的问题是 - 如何获得自API 21以来的选定日期。在21之前,经常采用ParsedRoute.cs,API 21+,唯一可行的方法似乎是提供CalendarView OnDateChangedListener DataPicker方法。

init

错误信息也有点过于神秘 - &#34;新的DatePicker&#34;不是指新的DatePicker对象(所以你可以期望能够初始化视图),而是指自API 21以来可用的新版DatePicker(每当你要求datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // do the date stuff } }); 时都会抛出错误)。 / p>