日期选择器不能在edittext中获得月份和年份

时间:2013-03-15 06:49:42

标签: android datepicker android-edittext

我正在尝试从Edittext中的Datepicker中选择日期。但是在Edittext中未更新月份和年份。

假设在我的Datepicker当前日期25/03/2013,如果我将其更改为29/02/2011,那么它正确显示日期(均值29)但是仍然是03年,而且年份仍然是2013年,

我不明白为什么我的月份和年份没有更新。

这是我的代码供您参考。

private int pYear=2012;
private int pMonth=04;
private int pDay=12;
private DatePickerDialog.OnDateSetListener pDateSetListener = new DatePickerDialog.OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear,

                int dayOfMonth) {
            pYear = year;
            pMonth = monthOfYear;
            pDay = dayOfMonth;

            if (pMonth != Calendar.getInstance().get(Calendar.MONTH)
                    || pYear != Calendar.getInstance().get(Calendar.YEAR)) {

                pMonth = Calendar.getInstance().get(Calendar.MONTH);
                pYear = Calendar.getInstance().get(Calendar.YEAR);
            }
            updateDisplay();

        }
    };


    /** Updates the date in the TextView */
    private void updateDisplay() {
        txtdob.setText(new StringBuilder()
                // Month is 0 based so add 1
        .append(pDay).append("/").append(pMonth + 1).append("/")
        .append(pYear).append(" "));
    }

    /** Create a new dialog for date picker */
    @Override
    protected Dialog onCreateDialog(int id) {

        Calendar cal = Calendar.getInstance();

        switch (id) {
        case DATE_DIALOG_ID:
            return new DatePickerDialog(AddBabyActivity.this, pDateSetListener,
                    cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), pDay);

        }
        return null;
    }

imvDate.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v) {
            showDialog(DATE_DIALOG_ID);
        }
    });  

我真的不明白我错在哪里 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我相信是因为您的ondateset中的这些代码删除了后续代码

if (pMonth != Calendar.getInstance().get(Calendar.MONTH)
                || pYear != Calendar.getInstance().get(Calendar.YEAR)) {

            pMonth = Calendar.getInstance().get(Calendar.MONTH);
            pYear = Calendar.getInstance().get(Calendar.YEAR);
        }

它说的是,如果来自日期设定者的月份和年份与当前日历的月份和年份不同,那么将它们更改为当前月份和当前年份