2013-12-11 6 views
0

я реализовал Date Picker следующим образом:Android Datepicker странное поведение

@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; 
     String strMonth = ""; 
     if (month == 0) { 
      strMonth = "January"; 
     } else if (month == 1) { 
      strMonth = "February"; 
     } else if (month == 2) { 
      strMonth = "March"; 
     } else if (month == 3) { 
      strMonth = "April"; 
     } else if (month == 4) { 
      strMonth = "May"; 
     } else if (month == 5) { 
      strMonth = "June"; 
     } else if (month == 6) { 
      strMonth = "July"; 
     } else if (month == 7) { 
      strMonth = "August"; 
     } else if (month == 8) { 
      strMonth = "September"; 
     } else if (month == 9) { 
      strMonth = "October"; 
     } else if (month == 10) { 
      strMonth = "November"; 
     } else if (month == 11) { 
      strMonth = "December"; 
     } 
     day = selectedDay; 

     tvPurchaseDate.setText(new StringBuilder().append(day).append(" ").append(strMonth).append(" ").append(year).append(" ")); 
     tvPurchaseDate.setTextColor(Color.BLACK); 
    } 
}; 

Проблема, которую я имею, что выбора даты отображает дату неправильно, как показано на рисунках ниже.

Как создается диалог:

enter image description here

Если я выбираю другую дату:

enter image description here

Примечание дата не текущая дата (сегодня) и год отображается на колесе и год, отображаемый в верхней части datepicker, совершенно разные. Я что-то делаю неправильно? Я не понимаю, потому что раньше я использовал этот код, и он работал нормально. Выбор даты вызывается из флиппера вида. Спасибо заранее

EDIT

Это, как я называю сборщика Дата:

private int day, month, year; 

В моем OnClick:

showDialog(DATE_DIALOG_ID); 

Тогда onCreateDialog() называется (отображается в коде выше), весь этот код находится внутри действия, из которого выполнен вызов.

+0

Какие PARAMS вы передаете в 'DatePickerDialog' конструктора? Вы вызываете какие-либо методы настройки в диалоговом окне позже? – laalto

+0

@laalto, я отредактировал мой вопрос. После этого я не вызываю никаких методов настройки в диалоговом окне. Дайте мне знать, если вам нужно что-то еще – Lunchbox

+0

@laalto, Oops, static final int DATE_DIALOG_ID = 999; – Lunchbox

ответ

0

Исправлено это сейчас, мне нужно было установить дату как сегодня, потому что сборщик дат только что добавил первую дату, которую он смог найти, и поэтому все показалось неправильным. Добавлен следующий код в мой onCreate()

Calendar c = Calendar.getInstance(); 
year = c.get(Calendar.YEAR); 
month = c.get(Calendar.MONTH); 
day = c.get(Calendar.DAY_OF_MONTH); 
Смежные вопросы