根据其他日期选择器对话框中的选定日期禁用以前的日期
Disable Previous dates base on selected date at other datepicker dialog
我想简单地解释一下这个问题,现在我有两个 android 数据选择器对话框,签入和签出。 Check-in datepicker 我已经把mindate设置为今天,也就是说用户只能选择今天。但是如何根据用户从签入日期选择器中选择的日期设置签出日期。
示例:今天 2016 年 3 月 11 日
用户选择签入 DatePicker : 7/11/2016
我希望在结帐日期选择器时禁用所有之前的日期,指的是 2016 年 7 月 11 日。
我搜索了很多教程和论坛,大多数时候只显示如何禁用基于当前日期的通过日期。
我的应用程序正在执行酒店登录系统
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)));
在我的 checkIn 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,并将 minDate 传递给 checkout datepickerdialog
我想简单地解释一下这个问题,现在我有两个 android 数据选择器对话框,签入和签出。 Check-in datepicker 我已经把mindate设置为今天,也就是说用户只能选择今天。但是如何根据用户从签入日期选择器中选择的日期设置签出日期。
示例:今天 2016 年 3 月 11 日
用户选择签入 DatePicker : 7/11/2016
我希望在结帐日期选择器时禁用所有之前的日期,指的是 2016 年 7 月 11 日。
我搜索了很多教程和论坛,大多数时候只显示如何禁用基于当前日期的通过日期。 我的应用程序正在执行酒店登录系统
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)));
在我的 checkIn 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,并将 minDate 传递给 checkout datepickerdialog