61

Android にはDatePicker.OnDateChangedListenerというイベント リスナーがあります。次のように、DatePicker ビューの on date changed リスナーを設定しようとしています。

DatePicker dp = new DatePicker(getContext());
dp.setOnDateChangedListener(this); 
//where this is my activity extends DatePicker.OnDateChangedListener

しかし、何だと思いますか?日付ピッカーにはsetOnDateChangedListenerというメソッドがありません。

私の質問は:

  1. Androidで日付変更リスナーを設定するにはどうすればよいですか?
  2. 日付変更リスナーを設定できない場合、このイベントの目的は何ですか?

ドキュメント/チュートリアルは非常に役立ちます。

4

5 に答える 5

117

を作成したらDatePicker、最初に表示したい日付で初期化する必要があります。これが、リスナーを追加できるポイントです。

を参照してくださいDatePicker.init(int, int, int, OnDateChangedListener)

アップデート

26 API を使用すると、リスナーを設定できます。DatePicker.setOnDateChangedListener()

于 2010-01-12T18:11:28.423 に答える
45

最善の方法は

        DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker);
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {

                @Override
                public void onDateChanged(DatePicker datePicker, int year, int month, int dayOfMonth) {
                    Log.d("Date", "Year=" + year + " Month=" + (month + 1) + " day=" + dayOfMonth);

                }
            });
于 2016-01-22T17:20:13.933 に答える
9

このようなもの:

DatePicker myDatePicker = (DatePicker) findViewById(R.id.my_date_picker);
myDatePicker.getCalendarView().setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
    @Override
    public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
        Log.d("tag", "finally found the listener, the date is: year " + year + ", month "  + month + ", dayOfMonth " + dayOfMonth);
    }
});
于 2015-08-09T18:51:48.963 に答える
5

オブジェクトinit()DatePicker呼び出します。

于 2010-01-12T18:11:52.230 に答える