Android – OnDateChangedListener – 你如何设置?

Android中有一个名为DatePicker.OnDateChangedListener的事件监听器。 我试图设置DatePicker视图的date更改侦听器,如下所示:

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

但猜猜怎么了? dateselect器没有一个名为setOnDateChangedListener的方法。

我的问题是:

  1. 那么你怎么在Android中设置一个date改变的监听器?
  2. 如果无法设置date更改侦听器,则此事件的目的是什么?

任何文档/教程将会非常有帮助。

一旦你创build了DatePicker ,你需要首先用你想要显示的date来初始化它。 这是您可以添加侦听器的地方。

请参阅DatePicker.init(int, int, int, OnDateChangedListener)

最好的方法是

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

调用DatePicker对象上的init()