Androidエミュレーターで奇妙なことが起こっています(コードとエミュレーターはAPIレベル10で実行されます-Android 2.3.3です):私のエミュの現在の日付は22.08.2011です-これらの設定でDatePickerDialogを初期化すると(newの値を使用) 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 レベル 2.3.3 の場合) をチェックアウトし、DatePicker コードをチェックしました (strack トレースから updateSpinners メソッドで失敗することがわかったため)、その行 357 (上記のスタックの 4 行目) trace) mYearPicker.setCurrent(mYear) を呼び出します。私の年には何か問題があるに違いないと思いました。通過する年を記録しました-予想どおり2011年です。そのため、代わりに手動で 2010 年を渡しましたが、これは機能しました - DatePickerDialog が表示されました - 2010 年で初期化されました (残念ながら、現在の年 - 2011 が本当に必要です;) ...)。
この理由が何であるかについて少し迷っています...上記のように、エミュレーターの日付は2011年8月22日に正しく設定されています-私の開発用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