Lollipop CalenderView DatePicker не вызывает метод OnDateChanged ()

Я работаю с DatePicker и обнаруживаю, что под Android 5.0 он не будет вызывать метод OnDateChanged () в OnDateChangedListener, когда он находится в режиме CalendarView, даже если выбрана новая дата. Если в теге xml DatePicker установлен параметр android: datePickerMode = "spinner", DatePicker будет отображаться как прядильщики, и он будет вызывать OnDateChanged (), когда будет выбрана новая дата. В более ранних версиях Android DatePicker вызывает OnDateChanged (), когда в обеих версиях CalendarView и Spinners выбрана новая дата. Вот соответствующий код:

@SuppressLint("InflateParams") View v = getActivity().getLayoutInflater().inflate(R.layout.dialog_date, null); DatePicker datePicker = (DatePicker) v.findViewById(R.id.dialog_date_DatePicker); datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int month, int day) { //Translate year, month, day into a Date object using a calendar mDate = new GregorianCalendar(year, month, day).getTime(); //Update argument to preserve selected value on rotation getArguments().putSerializable(EXTRA_DATE, mDate); } }); 

В моем приложении onDateChanged () не вызывается, а mDate не изменяется, если DatePicker находится в режиме CalendarView под Lollipop, но OnDateChanged () действительно вызывает вызов, а mDate изменяется, если DatePicker находится в режиме Spinners. В более ранних версиях Android вызывается OnDateChanged () и mDate изменяется в обеих версиях DatePicker.

Есть ли способ получить CalendarView DatePicker в 5.0 для вызова OnDateChanged ()? В противном случае, как еще я могу получить измененную дату из DatePicker, когда она находится в режиме CalendarView?

Solutions Collecting From Web of "Lollipop CalenderView DatePicker не вызывает метод OnDateChanged ()"

Я сталкиваюсь с одной и той же проблемой, и то, что происходит с onDateChange () и onTimeSet (), для DatePicker и TimePicker не вызывается в устройствах Nexus с обновлением lollipop.

Причина в устройствах-подключаемых устройствах, поскольку приложение часов обновлено, слушатели не работают.

После того, как диалог отключен, вам нужно создать собственный слушатель и установить значения в объекте календаря с помощью методов datepicker get () и передать календарь слушателю.

Простой пример кода

 /** * Returns the calendar instance once the date and time is set. * @return */ public Calendar getDateTime() { mCalendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), timePicker.getCurrentHour(), timePicker.getCurrentMinute()); return mCalendar; } 

Установите это в свой Xml-Layout:

 <DatePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:datePickerMode="spinner" android:spinnersShown="false" android:id="@+id/datepicker_popupwindow"/> 

С "android: spinnersShown =" false "" вы говорите ему, чтобы не показывать Spinner. Но это вызовет метод onDateChanged.