I have two DatePicker. One with From date and other with To date. I want to display To date always greater than from date according to From date selection .I am using the Android default date picker, and want to disable the past dates of TO datepicker if its greater than the From date and vice versa. I know this topic has been asked many times here. But, I couldn't make my code work like the suggested solutions, so please help?
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();
}
});
}
................................ Updated Code
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();
}
});