Search code examples
androidandroid-datepicker

Android Datepicker weird behaviour


I have implemented a Date picker as follows:

@Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DATE_DIALOG_ID:
            // set date picker as current date
            return new DatePickerDialog(this, datePickerListener, year, month, day);
        }
        return null;
    }

private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {



// when dialog box is closed, below method will be called.
    public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
        year = selectedYear;
        month = selectedMonth;
        String strMonth = "";
        if (month == 0) {
            strMonth = "January";
        } else if (month == 1) {
            strMonth = "February";
        } else if (month == 2) {
            strMonth = "March";
        } else if (month == 3) {
            strMonth = "April";
        } else if (month == 4) {
            strMonth = "May";
        } else if (month == 5) {
            strMonth = "June";
        } else if (month == 6) {
            strMonth = "July";
        } else if (month == 7) {
            strMonth = "August";
        } else if (month == 8) {
            strMonth = "September";
        } else if (month == 9) {
            strMonth = "October";
        } else if (month == 10) {
            strMonth = "November";
        } else if (month == 11) {
            strMonth = "December";
        }
        day = selectedDay;

        tvPurchaseDate.setText(new StringBuilder().append(day).append(" ").append(strMonth).append(" ").append(year).append(" "));
        tvPurchaseDate.setTextColor(Color.BLACK);
    }
};

The problem that I am having is that the date picker displays the date wrong as shown in the images below.

As the dialog is created:

enter image description here

If I select a different date:

enter image description here

Note the date is not the current date (today) and the year displayed on the wheel and the year displayed at the top of the datepicker are completely different. Am I doing anything wrong? I do not understand, because I have used this code before and it worked fine. The date picker is called from within a view flipper. Thank you in advance

EDIT

This is how I call the Date picker:

private int day, month, year;

In my onClick:

showDialog(DATE_DIALOG_ID);

Then the onCreateDialog() is called (displayed in the code above), all this code is inside the activity that the call is made from.


Solution

  • Fixed it just now, I needed to set the date as today, because the date picker just added the first date it could find and therefore everything displayed wrong. Added the following code in my onCreate()

    Calendar c = Calendar.getInstance();
    year = c.get(Calendar.YEAR);
    month = c.get(Calendar.MONTH);
    day = c.get(Calendar.DAY_OF_MONTH);