Hello guys i want to show the date picker(end date) after the date select from the start date.The end date picker will display date after the from date.End date will display date picker after the from date and before from date will not gonna show .what i got to do? What i am trying is
fromdate = (EditText) findViewById(fromDate);
todate = (EditText) findViewById(R.id.todate);
fromdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showTruitonDatePickerDialog(view);
}
});
todate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showToDatePickerDialog(view);
}
});
}
public void showTruitonDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
public void showToDatePickerDialog(View v) {
DialogFragment newFragment = new ToDatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
public static class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
fromdate.setText(day + "/" + (month + 1) + "/" + year);
} }
public static class ToDatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
view.setMinDate(fromDate);
todate.setText(day + "/" + (month + 1) + "/" + year); } }
try to use this code
public static boolean isDateAfter(String startDate,String endDate)
{
try
{
String myFormatString = "yyyy-M-dd"; // for example
SimpleDateFormat df = new SimpleDateFormat(myFormatString);
Date date1 = df.parse(endDate));
Date startingDate = df.parse(startDate);
if (date1.after(startingDate))
return true;
else
return false;
}
catch (Exception e)
{
return false;
}
}
It return true if enddate is after start date.
fromdate = (EditText) findViewById(fromDate);
todate = (EditText) findViewById(R.id.todate);
fromdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showTruitonDatePickerDialog(view);
}
});
todate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showToDatePickerDialog(view);
}
});
}
public void showTruitonDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
public void showToDatePickerDialog(View v) {
DialogFragment newFragment = new ToDatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
public static class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog;
datePickerDialog = new DatePickerDialog(getActivity(),this, year,
month,day);
return datePickerDialog;
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
fromdate.setText(day + "/" + month + "/" + year);
}
}
public static class ToDatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
// Calendar startDateCalendar=Calendar.getInstance();
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
String getfromdate = fromdate.getText().toString().trim();
String getfrom[] = getfromdate.split("/");
int year,month,day;
year= Integer.parseInt(getfrom[2]);
month = Integer.parseInt(getfrom[1]);
day = Integer.parseInt(getfrom[0]);
final Calendar c = Calendar.getInstance();
c.set(year,month,day+1);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),this, year,month,day);
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
return datePickerDialog;
}
public void onDateSet(DatePicker view, int year, int month, int day) {
todate.setText(day + "/" + month + "/" + year);
}
}
I choose a start date as....1/09/2017 Then i open a end date it displays from....2/09/2017
Define startDateCalendar like
Calendar startDateCalendar=Callendar.getInstance();
And update fragments code
public static class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(mActivity,this, year, month,day);
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
// Create a new instance of DatePickerDialog and return it
return datePickerDialog;
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
fromdate.setText(day + "/" + (month + 1) + "/" + year);
startDateCalendar.set(Calendar.YEAR, year);
startDateCalendar.set(Calendar.MONTH, month);
startDateCalendar.set(Calendar.DAY_OF_MONTH, day);
} }
public static class ToDatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),this, startDateCalendar.get(Calendar.YEAR), startDateCalendar.get(Calendar.MONTH), startDateCalendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.getDatePicker().setMinDate(startDateCalendar.getTimeInMillis());
// Create a new instance of DatePickerDialog and return it
return datePickerDialog;
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
view.setMinDate(fromDate);
todate.setText(day + "/" + (month + 1) + "/" + year); } }
you can use setMinDate and setMaxDate methods to the datepickerdialog.
eg: DatePicker toPicker = Util.getDatePicker(getActivity(), toDateSetListener, toYear, toMonth, toDay) .getDatePicker(); toPicker.setMinDate(getToMinDate()); toPicker.setMaxDate(System.currentTimeMillis());
So when you close your fromDate Dialog just store the variables in class level.
fromYear fromMonth fromDay
then when you launch toDate(fromYear, fromMonth, fromDay) to the dialog then instead of calendar. get current dates, just use the from and add +1 to the day for starting the picker at the next day. Make sense?
有一个名为MaterialDateRangePicker的库可以完全解决您的问题,请找到链接https://github.com/borax12/MaterialDateRangePicker
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.