set selected date to datepicker dialog

10,271

Solution 1

Declare this globally:

Calendar selectedDate = Calendar.getInstance();

Then set your date to the builder and save when user selects the date to selectedDate like below. This is will set current date until user selects a date.

@Override
    public void onClick(View v) {
        Dialog.Builder builder = null;
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR)+10;
        c.set(year, c.get(Calendar.MONTH), c.get(Calendar.DATE));
        builder = new DatePickerDialog.Builder(R.style.CustomStyle_DatePicker) {
            @Override
            public void onPositiveActionClicked(DialogFragment fragment) {
                DatePickerDialog dialog = (DatePickerDialog) fragment.getDialog();
                String date = dialog.getFormattedDate(SimpleDateFormat.getDateInstance());
                selected_date.setText(date);
                selectedDate.set(dialog.getYear(),dialog.getMonth(), dialog.getDay());
                super.onPositiveActionClicked(fragment);
            }

            @Override
            public void onNegativeActionClicked(DialogFragment fragment) {
                super.onNegativeActionClicked(fragment);
            }
        }.dateRange(System.currentTimeMillis() - 1000, c.getTimeInMillis()).date(selectedDate.get(Calendar.DATE),
                        selectedDate.get(Calendar.MONTH)
                        , selectedDate.get(Calendar.YEAR));
        builder.positiveAction("OK")
                .negativeAction("CANCEL");
        DialogFragment fragment = DialogFragment.newInstance(builder);
        fragment.show(getFragmentManager(), null);
    }

Solution 2

DatePickerDialog datePickerDialog ;


    private void initialiseDatePicker(){
        final Calendar c = Calendar.getInstance();
        int mYear;
        int mMonth;
        int mDay;

        //this is previous set date
        String date = dobButton.getText().toString().trim();
        //this is previous set date

if (date != null && date.length() > 0) {

//if you  have previous set date
            String data[] = date.split("-");
            mYear = Integer.parseInt(data[2]);

            mMonth = Integer.parseInt(data[1]);
            mMonth = mMonth - 1;
            mDay = Integer.parseInt(data[0]);
        } else {

//if you dont have previous set date then display current date
            mYear = c.get(Calendar.YEAR);
            mYear = mYear;
            mMonth = c.get(Calendar.MONTH);

            mDay = c.get(Calendar.DAY_OF_MONTH);
        }

        int mYear1 = c.get(Calendar.YEAR);
        int mMonth1 = c.get(Calendar.MONTH);
        int mDay1 = c.get(Calendar.DAY_OF_MONTH);

        Calendar maxDate = Calendar.getInstance();
        maxDate.set(mYear1, mMonth1, mDay1);

        Calendar minDate = Calendar.getInstance();
        minDate.set(mYear1 - 150, mMonth1, mDay1);

        datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                String dateOfBirth1 = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year;
                dobButton.setText(dateOfBirth1);

            }
        }, mYear, mMonth, mDay);

        final DatePicker datePicker = datePickerDialog.getDatePicker();

        datePicker.setMinDate(minDate.getTimeInMillis());
        datePicker.setMaxDate(maxDate.getTimeInMillis());




         datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                       datePicker.clearFocus();

                          int year = datePicker.getYear();
                          int monthOfYear=datePicker.getMonth();
                          int dayOfMonth = datePicker.getDayOfMonth();

                        String dateOfBirth1 = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year;

                        dobButton.setText(dateOfBirth1);

                        }
                    });



        datePickerDialog.setOnCancelListener(new OnCancelListener() {

            @Override
            public void onCancel(DialogInterface dialog) {
                dobButton.setText(dateOfBirth);
            }
        });

    }
Share:
10,271
meeftah
Author by

meeftah

Updated on July 28, 2022

Comments

  • meeftah
    meeftah almost 2 years

    after user select the date and reopen datepicker dialog, it set to current date...not the selected date...how do I set to selected date to datepicker after user reopen datepicker dialog, here is my code

    @Override
        public void onClick(View v) {
            Dialog.Builder builder = null;
            Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR)+10;
            c.set(year, c.get(Calendar.MONTH), c.get(Calendar.DATE));
            builder = new DatePickerDialog.Builder(R.style.CustomStyle_DatePicker) {
                @Override
                public void onPositiveActionClicked(DialogFragment fragment) {
                    DatePickerDialog dialog = (DatePickerDialog) fragment.getDialog();
                    String date = dialog.getFormattedDate(SimpleDateFormat.getDateInstance());
                    selected_date.setText(date);
                    super.onPositiveActionClicked(fragment);
                }
    
                @Override
                public void onNegativeActionClicked(DialogFragment fragment) {
                    super.onNegativeActionClicked(fragment);
                }
            }.dateRange(System.currentTimeMillis() - 1000, c.getTimeInMillis());
            builder.positiveAction("OK")
                    .negativeAction("CANCEL");
            DialogFragment fragment = DialogFragment.newInstance(builder);;
            fragment.show(getFragmentManager(), null);
        }
    

    I've search around but I could not get it work, any help?

  • meeftah
    meeftah about 8 years
    if I use this code it will change whole the code that I wrote so far...will you make adjustment so that I can put it in my code?
  • meeftah
    meeftah about 8 years
    thanks...once again, you always help me with my project :)
  • meeftah
    meeftah about 8 years
    and what if I want to set date from edittext to datepicker, not much trouble for you...
  • meeftah
    meeftah about 8 years
    yap...I have a date assign to edittext, now is that possible that I start datepicker from the date that I've set in edittext?...
  • Dhinakaran Thennarasu
    Dhinakaran Thennarasu about 8 years
    ofcourse it is possible.I suggest you to create a nnew question with your edittext code and how u assign to datepicker
  • meeftah
    meeftah about 8 years
    please refer to this link, I've included pictures