Android 不支持操作异常:CalendarView r

Android 不支持操作异常:CalendarView r,android,Android,我的项目中的日期选择器有问题。 我得到一个错误: java.lang.UnsupportedOperationException: CalendarView does not exists for the new DatePicker at android.widget.DatePickerCalendarDelegate.getCalendarView(DatePickerCalendarDelegate.java:498) at androi

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

 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()));

为了给像我这样的人节省一些时间,@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
}
if(Build.VERSION.SDK\u INT
真正的问题是——如何获得API 21之后的选定日期。在21世纪之前,一种常见的方法是使用
CalendarView
,API 21+唯一可能的方法似乎是在
DataPicker
init
方法中提供
OnDateChangedListener

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

错误消息也有点太神秘了——“new DatePicker”指的不是一个新的DatePicker对象(因此您可以期望能够初始化视图),而是自API 21以来可用的DatePicker的新版本(每当您请求
日历视图时就会抛出一个错误)。

您的代码是什么?您尝试过什么?默认情况下,datePickerMode是微调器,在API 21之后,如果您使用微调器模式,则无法获取CalendarView。@calvinfly,那么我如何解决我的问题?您使用的是微调器模式还是日历?抱歉,我错了…..在日历模式下,DatePicker.getCalendarView()将在API 21之后返回异常,您可以使用if case来处理大于或等于21的API级别