9

android.app.DatePickerDialog をポップアップするアクティビティがあります。

DatePickerDialog dialog =  new DatePickerDialog(this, startDateSetListener, start_cal.get(Calendar.YEAR), start_cal.get(Calendar.MONTH), start_cal.get(Calendar.DATE));

最小日付と最大日付を設定できるように、DatePickerDialog から DatePicker ビューを取得したいと考えています。API リファレンスには、メソッド getDatePicker があり、API 1 から存在していると書かれていますが、これは無効です。私の ide では気に入りません。

DatePicker picker = dialog.getDatePicker();

「メソッド getDatePicker() はタイプ DatePickerDialog に対して定義されていません」

メソッドがどの API で作成されたか、または DatePicker にアクセスして最小/最大日付を編集する方法を知っている人はいますか?

API 7、プラットフォーム 2.1 を使用しています。

4

2 に答える 2

23

getter メソッドは Honeycomb 以降でしか使用できないにもかかわらず (dmon が正しく指摘したように)、リフレクションを使用してDatePickerカプセル化されたオブジェクトに簡単にアクセスできますDatePickerDialog。次のようになります。

DatePickerDialog dialog = ... // create dialog
Field mDatePickerField = dialog.getClass().getDeclaredField("mDatePicker");
mDatePickerField.setAccessible(true);
DatePicker mDatePickerInstance = (DatePicker) mDatePickerField.get(dialog);

この時点から、内部DatePickerオブジェクトへの参照があり、自分の好みに合わせて変更できるはずです。ブラウザに直接入力したので、明らかなタイプミスに注意してください。

于 2012-05-08T23:41:40.853 に答える
4

API 11以降でのみ利用可能です:

"public DatePicker getDatePicker () 以降: API レベル 11". よく見てください。

于 2012-05-08T22:49:24.980 に答える