【问题标题】:Android DatePickerDialog - hide past datesAndroid DatePickerDialog - 隐藏过去的日期
【发布时间】:2015-06-01 12:49:54
【问题描述】:

我想在 Fragment 的 DatePickerDialog 中隐藏过去的日期。为此我正在使用:

 datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);      

但它向我显示错误...无法解决片段中的此方法“getDatePicker”

知道吗??? 提前谢谢

  public  void showDatePicker() {
            datePickerDialog = DatePickerDialog.newInstance(
                    this,
                    dateTime.get(Calendar.YEAR),
                    dateTime.get(Calendar.MONTH),
                    dateTime.get(Calendar.DAY_OF_MONTH));
            datePickerDialog.setYearRange(dateTime.get(Calendar.YEAR), dateTime.get(Calendar.YEAR) + 1);
            datePickerDialog.setCancelable(true);
            datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
            datePickerDialog.show(getChildFragmentManager(), TAG + "datePickerDialog");
        }

【问题讨论】:

    标签: java android datetimepicker


    【解决方案1】:

    试试这个,

        Calendar calendar=Calendar.getInstance();           
        DatePickerDialog dialog=new DatePickerDialog(this, new OnDateSetListener() {                        
    
                        @Override
                        public void onDateSet(DatePicker view, int year, int monthOfYear,
                                int dayOfMonth) {
    
                            //your code
                        }
                    }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); 
    
        dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
        dialog.show();
    

    【讨论】:

    • 是的......可能是......我已经多次看到这段代码......但它在我的情况下不起作用......因为那个意外错误
    【解决方案2】:

    看看这是否有效

     public  void showDatePicker() {
            datePickerDialog = DatePickerDialog.newInstance(
                    this,
                    dateTime.get(Calendar.YEAR),
                    dateTime.get(Calendar.MONTH),
                    dateTime.get(Calendar.DAY_OF_MONTH));
            datePickerDialog.setYearRange(dateTime.get(Calendar.YEAR), dateTime.get(Calendar.YEAR) + 1);
            datePickerDialog.setCancelable(true);
            Field mDatePickerField = datePickerDialog .getClass().getDeclaredField("mDatePicker");
            mDatePickerField.setAccessible(true);
            DatePicker mDatePicker = (DatePicker) mDatePickerField.get(datePickerDialog);
            mDatePicker.setMinDate(System.currentTimeMillis() - 1000);
            datePickerDialog.show(getChildFragmentManager(), TAG + "datePickerDialog");
        }
    

    【讨论】:

    • 字段 mDatePickerField = datePickerDialog.getClass().getDeclaredField("mDatePicker");
    • 这一行给了我错误“Ambigous method call getClass”
    • 当你这样做时你甚至不能编译/构建项目吗?
    • Android Studio 不允许我这样做...因为这个错误
    猜你喜欢
    • 2012-05-27
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多