【问题标题】:DatePickerDialog cannot implement OnDateSetListener on MaterialLibraryDatePickerDialog 无法在 MaterialLibrary 上实现 OnDateSetListener
【发布时间】:2015-08-10 02:42:07
【问题描述】:

我正在尝试使用来自rey5137's material library 的 DatePickerDialog,但它无法实现方法 OnDateSetListener。这是我的代码

dateFMCdialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                Calendar newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                dateFMC.setText(dateFormatter.format(newDate.getTime()));
            }
        },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));

当我实现 OnDateSetListener 方法时,这段代码给了我错误。看起来此对话框不支持 OnDateSetListener。我应该怎么做才能从这个对话框中获得价值?谢谢。

【问题讨论】:

    标签: java android datepickerdialog


    【解决方案1】:

    https://github.com/rey5137/material/blob/master/lib/src/main/java/com/rey/material/widget/DatePicker.java#L430看来,这个函数被称为setOnDateChangedListener,你需要实现OnDateChangedListener

    /**
     * Set the listener will be called when the selected date is changed.
     * @param listener The {@link DatePicker.OnDateChangedListener} will be called.
     */
    public void setOnDateChangedListener(OnDateChangedListener listener){
        mOnDateChangedListener = listener;
    }
    

    而来自https://github.com/rey5137/material/blob/master/lib/src/main/java/com/rey/material/widget/DatePicker.java#L72的接口是要实现的:

    /**
     * Interface definition for a callback to be invoked when the selected date is changed.
     */
    public interface OnDateChangedListener {
    
        /**
         * Called when the selected date is changed.
         * @param oldDay The day value of old date.
         * @param oldMonth The month value of old date.
         * @param oldYear The year value of old date.
         * @param newDay The day value of new date.
         * @param newMonth The month value of new date.
         * @param newYear The year value of new date.
         */
        public void onDateChanged(int oldDay, int oldMonth, int oldYear, int newDay, int newMonth, int newYear);
    }
    

    【讨论】:

    • 谢谢你,小鸡们。但是我如何才能获得旧变量(oldDay、oldMonth 等)?
    • 看起来这些是传入你实现的回调函数中的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2017-03-20
    • 2012-10-17
    • 2012-12-10
    相关资源
    最近更新 更多