Ответ 1
После создания DatePicker
вам необходимо инициализировать его с датой, которую вы хотите отобразить вначале. Это тот момент, когда вы можете добавить слушателя.
В Android есть прослушиватель событий DatePicker.OnDateChangedListener. Я пытаюсь установить представление DatePicker на измененный прослушиватель даты следующим образом:
DatePicker dp = new DatePicker(getContext());
dp.setOnDateChangedListener(this);
//where this is my activity extends DatePicker.OnDateChangedListener
Но угадайте, что? Выбор даты не имеет метода setOnDateChangedListener.
Мой вопрос:
Любая документация/учебники будут очень полезны.
После создания DatePicker
вам необходимо инициализировать его с датой, которую вы хотите отобразить вначале. Это тот момент, когда вы можете добавить слушателя.
Лучший способ -
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);
}
});
Это представление представляет собой комбинацию из четырех представлений, и они:
Три спиннинга
Один CalendarView
Как и в OnDateChangeListener, объект, который вы передали методу init, будет просто передан содержащемуся CalendarView, и я считаю, что вы знаете, что в добром старом CalendarView существует метод setOnDateChangeListener.........
В классе DatePicker существует метод, называемый getCalendarView, и это метод, который вы можете вызвать, если хотите получить доступ к содержащемуся CalendarView.
Как только вы получите доступ к содержащемуся CalendarView, то, разумеется, вы можете вызвать его setOnDateChangeListener
Что-то вроде этого:
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);
}
});
Вызвать init()
в объекте DatePicker
.