【问题标题】:Android Two DatePickers - limit max date on secondAndroid 两个 DatePickers - 限制第二个最大日期
【发布时间】:2014-10-02 20:40:57
【问题描述】:

在我的 android 片段中,我有 2 个日期选择器,当日期设置在第一个时,我想将第二个的最大日期限制为提前 +1 年。

这里有一些代码展示了我是如何实现选择器的:

 startDateBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Calendar c = Calendar.getInstance();
            startDateListener = new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker datePicker, int y, int m, int d) {
                    //Set start date
                    startDate = calToDateString(y, m, d);
                    Toast.makeText(getActivity(), startDate, Toast.LENGTH_SHORT).show();
                }
            };
            // init datepicker
            startDatePicker = new DatePickerDialog(getActivity(), startDateListener,
                    c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
            startDatePicker.show();
        }
    });
    endDateBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Calendar c = Calendar.getInstance();
            endDateListener = new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker datePicker, int y, int m, int d) {
                    queryEndDate = calToDateString(y, m, d);
                    Toast.makeText(getActivity(), queryEndDate, Toast.LENGTH_SHORT).show();
                }
            };
            endDatePicker = new DatePickerDialog(getActivity(), endDateListener,
                    c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
            // *** Can only set max date here initially - startDate has not been set ***
            Date endMax = getTodaysDate();
            endDatePicker.getDatePicker().setMaxDate(endMax.getTime());
            endDatePicker.show();
        }
    });
}

问题是,当设置结束日期选择器的最大日期时 - 尚未输入第一个日期选择器的开始日期。输入第一个(开始)日期时,如何设置第二个日期选择器的最大日期?我想我需要一个 startDate 变量的事件监听器,但我不确定如何实现它。有什么建议吗?

【问题讨论】:

    标签: android date events datepicker


    【解决方案1】:
    DatePickerDialog dpd=new DatePickerDialog(this, new OnDateSetListener() {
    
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
    int dayOfMonth) {
    Date myMaxDate;
        endDatePicker.setMaxDate(myMaxDate);
    
    }
    

    【讨论】:

    • 我知道如何设置 maxDate。那不是我问的。实际上,我的问题中显示了执行此操作的代码。
    • 对不起,我没弄好...希望这会有所帮助。干杯
    • 所以你说的是在第一个日期选择器的日期设置方法中设置它。我实际上没有想到这一点。我试图过度设计它,使它变得过于复杂。我想我也困了;)
    • 没错 :) 顺便说一句,每当您认为自己让事情变得过于复杂时,您可能就是这样。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    相关资源
    最近更新 更多