数据库中检索日期出现的错误

我用下面的代码创建DatePickerDialog,我想在数据库中检索用户的出生日期,当我打开dateDialog时,应该是用户的出生日期。现在的日期不对,应该是9月份,结果出来是10月份。这是什么原因造成的,如何改代码啊?

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {

    case DATE_DIALOG_ID:
        return new DatePickerDialog(this,
            mDateSetListener,
            mYear, mMonth, mDay);
    }
    return null;
}
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
    switch (id) {

    case DATE_DIALOG_ID:
        ((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);

        break;
    }
}   
private void updateDisplay() {
    dateText.setText(
        new StringBuilder()
        // Month is 0 based so add 1

        .append(mMonth +1).append("/")
        .append(mDay).append("/")
        .append(mYear).append(" "));
}

DatePickerDialog.OnDateSetListener mDateSetListener =
        new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            mYear = year;
            mMonth = monthOfYear;
            mDay = dayOfMonth;
            dob1 = (monthOfYear + "/" + dayOfMonth + "/" + year);
            if(maxYear - mYear <= 12){
                alertMessage = "User must be above age of 12.";
                dialogBox();
                year = mYear;
            }
            else{
                updateDisplay();
            }
        }
    };

原因是在创建日期对话框时,您将用户的出生月份和日期传递给了mMonth和mDay变量。但是,在更新日期对话框时,您使用的是这些变量而不是出生月份和日期。


要解决这个问题,您可以在onPrepareDialog方法中使用用户的出生月份和日期来更新日期对话框。例如:

((DatePickerDialog) dialog).updateDate(mYear, birthMonth, birthDay);

或者你可以在 onDateSet 方法中直接调用updateDisplay()方法来更新显示,而不是使用OnPrepareDialog来更新

updateDisplay();