Android中有一个名为 DatePicker.OnDateChangedListener 的事件监听器。 我试图在日期更改的侦听器上设置DatePicker视图,如下所示:
DatePicker dp = new DatePicker(getContext());
dp.setOnDateChangedListener(this);
//where this is my activity extends DatePicker.OnDateChangedListener
但是猜猜怎么着?
日期选择器没有名为 setOnDateChangedListener 的方法。
我的问题是:
任何文档/教程都会非常有用。
答案 0 :(得分:103)
创建DatePicker
后,您需要先将其初始化为您想要显示的日期。您可以在此处添加侦听器。
答案 1 :(得分:34)
最好的方法是
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);
}
});
答案 2 :(得分:11)
这个视图实际上是四个视图的组合,它们是:
三个旋转器
一个CalendarView
从OnDateChangeListener开始,传递给init方法的对象将被简单地传递给包含的CalendarView,我相信你知道旧的CalendarView中有一个setOnDateChangeListener方法....... .....
在DatePicker类中,有一个名为getCalendarView的方法,如果你想要使用所包含的CalendarView,它就是你可以调用的方法。
一旦你掌握了所包含的CalendarView,那么,不用说,你可以调用它的setOnDateChangeListener
答案 3 :(得分: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);
}
});
答案 4 :(得分:3)