Что-то странное происходит на моем эмуляторе Android (код и эмулятор работают на уровне API 10 — это Android 2.3.3): текущая дата на моем эму — 22.08.2011 — если я инициализирую DatePickerDialog с этими настройками (используя значения из нового Date() - который инициализирует дату текущей датой/временем), затем происходит сбой, за следующим исключением:
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): FATAL EXCEPTION: main
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): java.lang.IllegalArgumentException: current should be >= start and <= end
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.widget.NumberPicker.setCurrent(NumberPicker.java:288)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.widget.DatePicker.updateSpinners(DatePicker.java:357)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.widget.DatePicker.init(DatePicker.java:352)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:127)
08-22 02:14:23.731: ERROR/AndroidRuntime(3038): at android.app.DatePickerDialog.<init>(DatePickerDialog.java:86)
Поэтому я проверил исходный код для DatePicker (для API lvl 2.3.3), и я проверил код DatePicker (потому что из трассировки strack я знал, что он не работает в методе updateSpinners ) и в этой строке 357 (четвертая строка в приведенной выше трассировке стека) он вызывает mYearPicker.setCurrent(mYear); что заставило меня подумать, что что-то не так с моим годом. Я зарегистрировал год, который я прохожу - это 2011, как и ожидалось. Поэтому я вручную передал 2010 год, который сработал - появился DatePickerDialog - инициализированный 2010 годом (жаль, что мне действительно нужен текущий год - 2011;) ...).
Я немного в недоумении, в чем причина этого... Дата на моем эмуляторе - как упоминалось выше - правильно установлена на 22.08.2011 - мой ПК-разработчик установлен на ту же дату...
Любые подсказки/идеи относительно того, где я ошибаюсь? Чтобы упростить задачу, вот фрагмент кода, в котором я инициализирую DatePickerDialog:
// Initializes a Date object with the current date and time for clarification:
// it is actually declared as a private member variable of my class -
// just included it here so you guys know of which type dateTime ist
Date dateTime = new Date();
Button dateButton = new Button(context);
dateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// dateSetListener is declared as well - but its code has no influence on the failure of
// the DatePickerDialog - to ensure this I commented all code in the dateSetListener's
// onDateSet method
Dialog dateDialog = new DatePickerDialog(v.getContext(), dateSetListener, dateTime.getYear(),
dateTime.getMonth(), dateTime.getDay());
dateDialog.show();
}
});
Заранее спасибо и с наилучшими пожеланиями, Ready4Android