web-dev-qa-db-ja.com

Android-OnDateChangedListener-これをどのように設定しますか?

Androidと呼ばれるDatePicker.OnDateChangedListenerにイベントリスナーがあります。次のようにDatePickerビューの日付変更リスナーを設定しようとしています。

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

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

私の質問は:

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

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

55
Tawani

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

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

104
Christopher Orr

最善の方法は

        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);

                }
            });
36
turbandroid

このビューは、実際には4つのビューの組み合わせであり、次のとおりです。

3つのスピナー

1つのCalendarView

OnDateChangeListenerの時点で、initメソッドに渡したオブジェクトは含まれているCalendarViewに単純に渡され、古き良きCalendarViewにsetOnDateChangeListenerメソッドがあることを知っていると思います...... .... ..

DatePickerクラスには、getCalendarViewというメ​​ソッドがあります。これは、含まれているCalendarViewを手に入れたい場合に呼び出すことができるメソッドです。

含まれているCalendarViewを取得したら、言うまでもなく、そのsetOnDateChangeListenerを呼び出すことができます

11
user2389347

このようなもの:

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);
    }
});
9
Andrew

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

3
CommonsWare