我的 Android 模拟器上发生了一些奇怪的事情(代码和模拟器在 API 级别 10 上运行 - 是 Android 2.3.3):我的 emu 上的当前日期是 22.08.2011 - 如果我使用这些设置初始化 DatePickerDialog(使用新的值Date() - 用当前日期/时间初始化 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 行(上面堆栈中的第四行trace) 它调用 mYearPicker.setCurrent(mYear); 这让我觉得我这一年一定有问题。我记录了我要过的那一年——正如预期的那样,它是 2011 年。所以我手动传递了 2010 年而不是工作 - DatePickerDialog 出现了 - 用 2010 年初始化(太糟糕了,我真的需要当前年份 - 2011 ;) ...)。
我有点不知道这是什么原因......我的模拟器上的日期 - 如上所述 - 正确设置为 22.08.2011 - 我的开发 PC 设置为相同的日期......
关于我哪里出错的任何线索/想法?为了让事情变得更简单,这里是我初始化 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