2013-03-15 74 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); 
     } 

什麼要說的是如果從日二傳手傳出年份和月份是不一樣的月,當前日曆的年份,然後將它們更改爲當前月份和當前年份