首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设定一个DatePickerDialog最低一天,比其他DatePickerDialog高一天

设定一个DatePickerDialog最低一天,比其他DatePickerDialog高一天
EN

Stack Overflow用户
提问于 2016-07-02 09:31:35
回答 1查看 57关注 0票数 0

我有两个编辑文本框,一个用于签入,另一个用于签出日期。

我已经采取了两个DatePickerDialog,当您单击编辑文本框时将打开,这是很好的工作,但我需要它的设置,所以当一个日期被选中在编辑文本框,然后签出数据应从第二天开始签入日期。

也就是说,您的退房日期不能早于您的入住日期。

代码语言:javascript
复制
my current code:

private void setDateTimeField() {
        checkInEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus){
                    fromDatePickerDialog.show();

                }
            }
        });

        checkOutEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    toDatePickerDialog.show();
                }
            }
        });

        Calendar newCalendar = Calendar.getInstance();
        fromDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                Calendar newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                checkInEdit.setText(dayOfMonth + "-" + monthOfYear + "-" + year);

                newDate.add(Calendar.DATE, 1);

                toDatePickerDialog.getDatePicker().setMinDate(newDate.get(Calendar.MILLISECOND));
            }

        },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));


        toDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                Calendar newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                checkOutEdit.setText(dayOfMonth + "-" + monthOfYear + "-" + year);
            }

        },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));


        fromDatePickerDialog.getDatePicker().setMinDate(newCalendar.get(Calendar.MILLISECOND));
        toDatePickerDialog.getDatePicker().setMinDate(newCalendar.get(Calendar.MILLISECOND));
    }

我加了一行

代码语言:javascript
复制
toDatePickerDialog.getDatePicker().setMinDate(newDate.get(Calendar.MILLISECOND));

然而,在fromDatePickerDialog onDateSet方法中,这似乎不太适用,即当我打开toDatePickerDialog时,它的日期仍然设置为今天。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-02 09:46:25

我还没有测试过,但是如果它有效,请尝试下面的代码,

首先使用一个全局变量作为from date,并使用calander数据类型,如下所示:

代码语言:javascript
复制
       Calendar fromDate;

现在从日期开始,选择在那里设置此fromDate,所选日期如下所示

代码语言:javascript
复制
     // In your fromDatePickerDialog at onDateSet method 
     fromDate = newDate;

现在更改您的以下代码,以便时间编辑文本的焦点列表器

代码语言:javascript
复制
     checkOutEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {

                if(fromDate != null)
                      toDatePickerDialog.setMinDate(fromDate.getTime());

                toDatePickerDialog.show();
            }
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38158623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档