【发布时间】:2018-04-29 21:59:06
【问题描述】:
我有两个 DatePicker。一个带有 From 日期,另一个带有 To 日期。我想要 根据 From date selection 显示 To date 总是大于 from date 。我正在使用 Android 默认日期选择器,并希望禁用过去 TO datepicker 的日期,如果它大于 From 日期,反之亦然。我知道 这个话题在这里被问过很多次。但是,我无法让我的代码工作 喜欢建议的解决方案,所以请帮忙?
Calendar calendarOne = Calendar.getInstance();
datePickerFrom= new DatePickerDialog(getActivity(), new
DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
StringBuilder selectedDate = new
StringBuilder().append(dayOfMonth).append("-").append(monthOfYear +
1).append("-").append(year);
fromText.setText(selectedDate);
fromText.setTextColor(android.graphics.Color.BLACK);
}
}, calendarOne.get(Calendar.YEAR), calendarOne.get(Calendar.MONTH),
calendarOne.get(Calendar.DAY_OF_MONTH));
fromText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
datePickerFrom.getDatePicker().setMaxDate(new
Date().getTime());
datePickerFrom.show();
}
});
Calendar calendarTwo = Calendar.getInstance();
datePickerTo = new DatePickerDialog(getActivity(), new
DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int
dayOfMonth) {
StringBuilder selectedDate = new
StringBuilder().append(dayOfMonth).append("-").append(monthOfYear +
1).append("-").append(year);
toText.setText(selectedDate);
toText.setTextColor(android.graphics.Color.BLACK);
}
}, calendarTwo.get(Calendar.YEAR), calendarTwo.get(Calendar.MONTH),
calendarTwo.get(Calendar.DAY_OF_MONTH));
toText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
datePickerTo.getDatePicker().setMaxDate(new Date().getTime());
datePickerTo.show();
}
});
}
....................... 更新代码
final Calendar calendarOne = Calendar.getInstance();
datePickerFrom= new DatePickerDialog(getActivity(), new
DatePickerDialog.OnDateSetListener()
{
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onDateSet(DatePicker view, int year, final int
monthOfYear, int dayOfMonth)
{
StringBuilder selectedDate = new
StringBuilder().append(dayOfMonth).append("-
").append(monthOfYear + 1).append("-").append(year);
fromText.setText(selectedDate);
fromText.setTextColor(android.graphics.Color.BLACK);
Calendar calendarTwo = Calendar.getInstance();
datePickerTo = new DatePickerDialog(getActivity());
datePickerTo.getDatePicker().setMinDate(calendarOne.getTimeInMillis());
datePickerTo = new DatePickerDialog(activity, new
DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int
month, int dayOfMonth) {
StringBuilder selectedDate = new
StringBuilder().append(dayOfMonth).append("-").append(monthOfYear +
1).append("-").append(year);
toText.setText(selectedDate);
toText.setTextColor(android.graphics.Color.BLACK);
}
}, calendarTwo.get(Calendar.YEAR),
calendarTwo.get(Calendar.MONTH),
calendarTwo.get(Calendar.DAY_OF_MONTH));
toText.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
datePickerTo.getDatePicker().setMaxDate(new
Date().getTime());
datePickerTo.show();
}
});
}
}, calendarOne.get(Calendar.YEAR),
calendarOne.get(Calendar.MONTH),
calendarOne.get(Calendar.DAY_OF_MONTH));
fromText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
datePickerFrom.getDatePicker().setMaxDate(new
Date().getTime());
datePickerFrom.show();
}
});
【问题讨论】:
标签: android date datepicker calendar