Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在“其他日期选择器”对话框中基于选定日期禁用以前的日期_Android_Date_Datepicker_Duration_Period - Fatal编程技术网

Android 在“其他日期选择器”对话框中基于选定日期禁用以前的日期

Android 在“其他日期选择器”对话框中基于选定日期禁用以前的日期,android,date,datepicker,duration,period,Android,Date,Datepicker,Duration,Period,我想简单地解释一下这个问题,现在我有两个安卓数据采集器对话框,签入和签出。签入日期选择器我已经将mindate设置为今天,这意味着用户只能选择今天。但是如何根据用户从签入日期选择器中选择的日期设置签出日期 示例:今天2016年3月11日 用户选择入住日期选择器:2016年11月7日 我希望在退房日期选择器中禁用2016年11月7日之前的所有日期 我搜索了很多教程和论坛,大多数时候只显示如何在当前日期的基础上禁用pass date。 我的应用程序是做酒店登录系统 public void showD

我想简单地解释一下这个问题,现在我有两个安卓数据采集器对话框,签入和签出。签入日期选择器我已经将mindate设置为今天,这意味着用户只能选择今天。但是如何根据用户从签入日期选择器中选择的日期设置签出日期

示例:今天2016年3月11日

用户选择入住日期选择器:2016年11月7日

我希望在退房日期选择器中禁用2016年11月7日之前的所有日期

我搜索了很多教程和论坛,大多数时候只显示如何在当前日期的基础上禁用pass date。 我的应用程序是做酒店登录系统

public void showDialog() {
    btncheckin = (Button) findViewById(R.id.checkInDate);
    btncheckout = (Button) findViewById(R.id.checkoutdate);
    btncheckin.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    showDialog(DIALOG_ID);

                }


            }
    );
    btncheckout.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    showDialog(DIALOG2_ID);

                }


            }
    );

}

@Override
protected  Dialog onCreateDialog(int id) {

    switch (id) {
        case DIALOG2_ID:

            DatePickerDialog datePickerDialog = new DatePickerDialog(this, dpickerListnerCheckOut, year_x, month_x, day_x);


            Calendar c = Calendar.getInstance();

            c.add(Calendar.DATE, 1);

            Date newDateBlock = c.getTime();
            datePickerDialog.getDatePicker().setMinDate(newDateBlock.getTime());

            return datePickerDialog;

        case DIALOG_ID:

        DatePickerDialog datePickerDialog2 = new DatePickerDialog(this, dpickerListnerCheckIn, year_x, month_x, day_x);
            Calendar c2 = Calendar.getInstance();

            c2.add(Calendar.DATE, 1);
            datePickerDialog2.getDatePicker().setMinDate(System.currentTimeMillis()-1000);

            return datePickerDialog2;
    }
    return null;
}


 DatePickerDialog.OnDateSetListener dpickerListnerCheckOut = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        year_x = year;
        month_x = month + 1;
        day_x = dayOfMonth;

         //Toast.makeText(PaymentActivity.this,year_x +"/"+month_x +" / "+day_x,Toast.LENGTH_SHORT).show();

        checkOutText.setText(year_x + "/" + month_x + "/ " + day_x);


    }
};


 DatePickerDialog.OnDateSetListener dpickerListnerCheckIn = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        year_x = year;
        month_x = month + 1;
        day_x = dayOfMonth;
        checkInText.setText(year_x + "/" + month_x + "/ " + day_x);
    }
};

那么你应该试试这个:-

datePickerDialog.getDatePicker().setMinDate(newDate.getTime()-(newDate.getTime()%(24*60*60*1000)));

在我的签入dpickerlistener中,我添加了以下行

try {
     String dateString = checkInDate;
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
     Date date = sdf.parse(dateString);
     Long minDate = date.getTime();
     } catch (java.text.ParseException e) {
            e.printStackTrace();
     }
“签出日期选择器”对话框

DatePickerDialog datePickerDialog = new DatePickerDialog(this, dpickerListnerCheckOut, year_x, month_x, day_x);
Calendar c = Calendar.getInstance();

         c.add(Calendar.DATE, 1);
         datePickerDialog.getDatePicker().setMinDate(minDate);

return datePickerDialog;

我所做的解决方案是,我尝试从checkin dpickerlistener mindate获取mindate,并将其传递给checkout datepickerdialog mindate

以毫秒为单位将签入日期设置为长变量,然后将其设置为签出日期选择器的最小日期。如何以毫秒为单位将签入日期设置为长变量?可以举一些例子吗?我已经测试了这两行,它只会禁用今天的通过日期。正如我在问题中所说,我已经做到了这一点,我想要实现的目标是:我有两个数据采集器Dialog,签入和签出。我希望根据签入日期选择器对话框中选择的日期禁用签出日期选择器对话框的所有通过日期。具体来说,我举了一个例子:用户在签入日期选择器对话框中选择2016年11月15日。我希望在“签出”对话框中阻止上一个日期为2016年11月15日。@JackdonChew请检查我的更新答案。如果您有任何疑问,请询问我。date newDate=c.getTime();是这样声明的新日期吗?@JackdonChew newDate是您的结账日期。我应该在什么地方声明新日期