Android - update minDate and maxDate from DatePickers many times for start and end dates

I have two Datepickers dialogs for ToDate [start] and FromDate [end].

I set the datePicker max date to the current using the setMaxDate () function.

My problem is that when

1) I am changing the date of ToDatePicker, I will not become setMaxDate () FromDatePicker.

2) I am changing the date FromDatePicker I will not become setMinDate () from ToDatePicker.

In my code this work is the 1st time, but the next time I change one or one datepicker, it does not set setMaxDate (), the setMinDate () function

here is my code

dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US); Calendar newCalendar = Calendar.getInstance(); //Setting first None value to updatedDate To and from Util.SaveToSharedPref(MgntNCActivity.this, Constant.ShaPreMgntNcFilter, Constant.ShaPreMgntNcFilterUpdatedToDate, Constant.NoValue); Util.SaveToSharedPref(MgntNCActivity.this, Constant.ShaPreMgntNcFilter, Constant.ShaPreMgntNcFilterUpdatedFromDate, Constant.NoValue); datePickerDiaFrom=new DatePickerDialog(MgntNCActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Calendar upDateFrom = Calendar.getInstance(); upDateFrom.set(year, monthOfYear, dayOfMonth); txtFromUpdatedDate.setText(dateFormatter.format(upDateFrom.getTime())); // System.out.println("Date 1 )GTM : "+upDateTo.getTime().toGMTString()); //setting minimum limit to date Picker 'To' if (dateFormatter.format(upDateFrom.getTime()).equals(dateFormatter.format(NetworkUtil.getTodayDate()))) { upDateFrom.set(Calendar.HOUR_OF_DAY, upDateFrom.getMinimum(Calendar.HOUR_OF_DAY)); upDateFrom.set(Calendar.MINUTE, upDateFrom.getMinimum(Calendar.MINUTE)); upDateFrom.set(Calendar.SECOND, upDateFrom.getMinimum(Calendar.SECOND)); upDateFrom.set(Calendar.MILLISECOND, upDateFrom.getMinimum(Calendar.MILLISECOND)); datePickerDiaTo.getDatePicker().setMinDate(upDateFrom.getTimeInMillis()); System.out.println("setting To DatePicker current date as minDate : " +dateFormatter.format(NetworkUtil.getTodayDate())); }else{ datePickerDiaTo.getDatePicker().setMinDate(upDateFrom.getTimeInMillis()); System.out.println("setting To DatePicker minDate : " +dateFormatter.format(upDateFrom.getTime())); } //datePickerDiaTo.getDatePicker().setMinDate(upDateFrom.getTimeInMillis()); Util.SaveToSharedPref(MgntNCActivity.this, Constant.ShaPreMgntNcFilter, Constant.ShaPreMgntNcFilterUpdatedFromDate, dateFormatter.format(upDateFrom.getTime())); } }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); datePickerDiaTo=new DatePickerDialog(MgntNCActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Calendar upDateTo = Calendar.getInstance(); upDateTo.set(year, monthOfYear, dayOfMonth); txtToUpdatedDate.setText(dateFormatter.format(upDateTo.getTime())); // System.out.println("Date 1 )GTM : "+upDateTo.getTime().toGMTString()); //setting maximum limit to date Picker 'From' if (dateFormatter.format(upDateTo.getTime()).equals(dateFormatter.format(NetworkUtil.getTodayDate()))) { upDateTo.set(Calendar.HOUR_OF_DAY, upDateTo.getMaximum(Calendar.HOUR_OF_DAY)); upDateTo.set(Calendar.MINUTE, upDateTo.getMaximum(Calendar.MINUTE)); upDateTo.set(Calendar.SECOND, upDateTo.getMaximum(Calendar.SECOND)); upDateTo.set(Calendar.MILLISECOND, upDateTo.getMaximum(Calendar.MILLISECOND)); datePickerDiaFrom.getDatePicker().setMaxDate(upDateTo.getTimeInMillis()); System.out.println("setting From DatePicker current date as maxDate : " +dateFormatter.format(NetworkUtil.getTodayDate())); }else{ datePickerDiaFrom.getDatePicker().setMaxDate(upDateTo.getTimeInMillis()); System.out.println("setting From DatePicker maxDate : " +dateFormatter.format(upDateTo.getTime())); } //datePickerDiaFrom.getDatePicker().setMaxDate(upDateTo.getTimeInMillis()); Util.SaveToSharedPref(MgntNCActivity.this, Constant.ShaPreMgntNcFilter, Constant.ShaPreMgntNcFilterUpdatedToDate, dateFormatter.format(upDateTo.getTime())); } }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); //setting max limit to date Picker datePickerDiaTo.getDatePicker().setMaxDate(NetworkUtil.getTodayDate().getTime()); datePickerDiaFrom.getDatePicker().setMaxDate(NetworkUtil.getTodayDate().getTime()); 

Anyone please suggest me a solution to this ... Thanks ...

+5
source share
1 answer

Finally, I found a solution :)

I am writing datePickerDialogs datePickerDiaFrom ',' datePickerDiaTo 'are class variables, so when I change minDate or maxDate at this time, it does not replace the previous date.

My decision:

every time I click on textview to open a new dialogPicker and set a range for it.

here is my code:

 static long MaximumDate=0,MinimunDate=0; dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US); View.OnClickListener showDatePicker = new View.OnClickListener() { @Override public void onClick(View v) { final View vv = v; Calendar newCalendar=Calendar.getInstance(); switch (vv.getId()) { case R.id.txtFromUpdatedDate_MgntNC: DatePickerDialog dialogFrom=new DatePickerDialog(MgntNCActivity.this, new OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Calendar upDateFrom = Calendar.getInstance(); upDateFrom.set(year, monthOfYear, dayOfMonth); txtFromUpdatedDate.setText(dateFormatter.format(upDateFrom.getTime())); MinimunDate=upDateFrom.getTimeInMillis(); } }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); if (MaximumDate!=0) { dialogFrom.getDatePicker().setMaxDate(MaximumDate); }else{ dialogFrom.getDatePicker().setMaxDate(NetworkUtil.getTodayDate().getTime()); } dialogFrom.show(); dialogFrom.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface arg0) { MinimunDate=0; txtFromUpdatedDate.setText(Constant.NoValue); } }); break; case R.id.txtToUpdatedDate_MgntNC: DatePickerDialog dialogTo=new DatePickerDialog(MgntNCActivity.this, new OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Calendar upDateTo = Calendar.getInstance(); upDateTo.set(year, monthOfYear, dayOfMonth); txtToUpdatedDate.setText(dateFormatter.format(upDateTo.getTime())); MaximumDate=upDateTo.getTimeInMillis(); } }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); dialogTo.getDatePicker().setMaxDate(NetworkUtil.getTodayDate().getTime()); if (MinimunDate!=0) { dialogTo.getDatePicker().setMinDate(MinimunDate); }else{ //dialog1.getDatePicker().setMinDate(NetworkUtil.getTodayDate().getTime()); } dialogTo.show(); dialogTo.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface arg0) { MaximumDate=0; } }); break; default: break; } } }; txtFromUpdatedDate.setOnClickListener(showDatePicker); txtToUpdatedDate.setOnClickListener(showDatePicker); 
+3
source

Source: https://habr.com/ru/post/1212524/


All Articles