【问题标题】:CalenderView does not exist - trying to implement DatePickerDialogCalenderView 不存在 - 尝试实现 DatePickerDialog
【发布时间】:2016-03-10 22:51:36
【问题描述】:

我正在尝试实现当用户单击文本框时弹出的 DatePickerDialog。设置日期后,我正在尝试将文本框的文本设置为日期的格式化版本 - 听起来很简单,是吗?

我收到一条错误消息,告诉我传递给 DatePickerDialog 的 onDateSet 事件处理程序的 DatePicker 对象的日历视图不存在!为什么会这样?我想不通。任何帮助将不胜感激。

仅供参考:我的目标是 API 23,最低 API 19,在 API 22 上运行它

这是我的 EditText 的 OnClickListener 的代码...

private class DateClickListener implements View.OnClickListener{

    int mYear;
    int mMonth;
    int mDay;

    public void formatDate(long selectedDate){
        mDateText.setText(DateFormat.getDateInstance().format(selectedDate));
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        //To show current date in the datepicker
        Calendar mcurrentDate=Calendar.getInstance();
        mYear=mcurrentDate.get(Calendar.YEAR);
        mMonth=mcurrentDate.get(Calendar.MONTH);
        mDay=mcurrentDate.get(Calendar.DAY_OF_MONTH);

        DatePickerDialog mDatePicker=new DatePickerDialog(CreateOuttingActivity.this, new DatePickerDialog.OnDateSetListener() {
            public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) {
                formatDate(datepicker.getCalendarView().getDate());
            }
        },mYear, mMonth, mDay);
        mDatePicker.setTitle("Select date");
        mDatePicker.show();
    }
}

这是确切的错误跟踪:

03-10 17:52:20.750 21766-21766/... E/AndroidRuntime: FATAL EXCEPTION: main
                                                               Process: ..., PID: 21766
                                                               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 ...CreateActivity$DateClickListener$1.onDateSet(CreateActivity.java:70)
                                                                   at android.app.DatePickerDialog.onClick(DatePickerDialog.java:134)

【问题讨论】:

    标签: java android datepicker calendar date-format


    【解决方案1】:

    getCalendarView() 在 API 21 后不受支持。 你可以试试这个——

     DatePickerDialog mDatePicker=new DatePickerDialog(CreateOuttingActivity.this, new DatePickerDialog.OnDateSetListener() {
                public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) {
                    formatDate(getTimeFromDatePicker(view));
                }
            },mYear, mMonth, mDay);
    

    getTimeFromDatePicker() 可以这样定义 -

    public long getTimeFromDatePicker(DatePicker datePicker) {
            Calendar calendar = Calendar.getInstance();
            calendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
    
            return calendar.getTimeInMillis();
        }
    

    【讨论】:

    • 它有效,谢谢。不知道它不再受支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多