2013-03-15 75 views
0

我想从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

确保在更改DatePickerDialog中的值时调用onDateSet方法? – 2013-03-15 07:01:23

+0

日子在变,但只有月和年没有变化。 – 2013-03-15 07:06:35

回答

1

我相信这是因为在你的ondateset这个peice的代码中删除followoing代码

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

什么要说的是如果从日二传手传出年份和月份是不一样的月,当前日历的年份,然后将它们更改为当前月份和当前年份