2013-07-17 1 views
4

Пожалуйста, обратитесь к следующему изображению:диалог Datepicker не соответствует выбранной датой

enter image description here

Текст выше говорит чт, 28 октября 1909 ... в то время как DatePicker на самом деле имеет значение 3-го января, 1902. Какая ошибка?

Вот мой код:

@SuppressWarnings("deprecation") 
public void setTheDate(View v){ 
    showDialog(DATE_DIALOG_ID); 
} 

@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; 
     day = selectedDay; 
     System.out.println("date" + year + month + day); 
    } 
}; 

DATE_DIALOG_ID является окончательным постоянным, и я называю метод setTheDate() на нажатие кнопки.

Что я делаю неправильно?

ответ

0

Простенько попробуйте это, как и ваш код, но он работает для меня.

Calendar c = Calendar.getInstance(); 
      mYear = c.get(Calendar.YEAR); 
      mMonth = c.get(Calendar.MONTH); 
      mDay = c.get(Calendar.DAY_OF_MONTH); 
      y = c.get(Calendar.YEAR); 
      m = c.get(Calendar.MONTH); 
      dy = c.get(Calendar.DAY_OF_MONTH); 

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

       public void onDateSet(DatePicker view, int year, 
         int monthOfYear, int dayOfMonth) { 
        Log.d("err", "onselect"); 
        mYear = year; 
        mMonth = monthOfYear; 
        mDay = dayOfMonth; 


       } 
      }; 

      DatePickerDialog d = new DatePickerDialog(getActivity(), 
        mDateSetListener, mYear, mMonth, mDay); 
      d.show(); 
+0

Ах, конечно! Ошибка была в том, что я не установил этот экземпляр сегодня! Итак, это означало, что календарь будет иметь первое значение, которое может быть, что составляет 1900. –

1

Вы можете использовать этот код для извлечения значения из даты. Добавьте этот код в onDateSet() method of OnDateSetListener()

TimestampField field = (TimestampField) fieldpicker; 
Timestamp timestamp = field.getTimestamp(); 
timestamp.setYear(year - 1900); 
timestamp.setMonth(monthOfYear); 
timestamp.setDate(dayOfMonth); 
field.setTimestamp(timestamp); 

на экране появится дата в правильном формате