Il y a un écouteur d'événements dans Android appelé DatePicker.OnDateChangedListener. J'essaie de définir l'écouteur de la date de modification d'une vue DatePicker comme suit:
DatePicker dp = new DatePicker(getContext());
dp.setOnDateChangedListener(this);
//where this is my activity extends DatePicker.OnDateChangedListener
Mais devinez quoi? Le sélecteur de date n'a pas de méthode appelée setOnDateChangedListener.
Ma question est:
Toute documentation/tutoriel sera très utile.
Une fois que vous avez créé votre DatePicker
, vous devez l'initialiser avec la date que vous souhaitez afficher en premier. C'est le point auquel vous pouvez ajouter votre écouteur .
Voir DatePicker.init(int, int, int, OnDateChangedListener)
.
Le meilleur moyen est
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);
}
});
Cette vue est en fait une combinaison de quatre vues, et ce sont:
Trois filateurs
One CalendarView
À partir de OnDateChangeListener, l'objet que vous avez transmis à la méthode init sera simplement transmis à CalendarView contenu, et je pense que vous savez qu'il existe une méthode setOnDateChangeListener dans la bonne vieille CalendarView ...... .... ..
Dans la classe DatePicker, il existe une méthode appelée getCalendarView, et c'est la méthode que vous pouvez appeler si vous souhaitez mettre la main sur le CalendarView contenu.
Une fois que vous avez mis la main sur le CalendarView contenu, alors, inutile de le dire, vous pouvez appeler son setOnDateChangeListener
Quelque chose comme ça:
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);
}
});
Appelez init()
sur l'objet DatePicker
.