Search code examples
androidandroid-calendarandroid-datepicker

Android show the datepicker(end date) greater than the start date?


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); } }

Solution

  •      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 enter image description here Then i open a end date it displays from....2/09/2017 enter image description here