meeftah
meeftah

Reputation: 95

set selected date to datepicker dialog

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?

Upvotes: 2

Views: 12641

Answers (2)

Dhinakaran Thennarasu
Dhinakaran Thennarasu

Reputation: 3356

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

Upvotes: 6

Rohit Heera
Rohit Heera

Reputation: 2727

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

    }

Upvotes: 2

Related Questions