knu*_*ndc 16 android datepicker calendarview android-5.0-lollipop
我正在使用DatePicker并发现在Android 5.0下,即使选择了新日期,它也不会在其日历视图模式下调用其OnDateChangedListener中的OnDateChanged()方法.如果在DatePicker的xml标记中设置了android:datePickerMode ="spinner",则DatePicker将显示为微调器,并且在选择新日期时将调用OnDateChanged().在早期版本的Android中,当CalendarView和Spinners版本中都选择了新日期时,DatePicker会调用OnDateChanged().这是相关的代码:
@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);
}
});
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,onDateChanged()没有被调用,如果DatePicker在Lollipop下处于CalendarView模式,mDate不会被更改,但是如果DatePicker处于Spinners模式,则调用OnDateChanged()并且mDate会改变.在早期版本的Android中,调用OnDateChanged()并在两个版本的DatePicker中更改mDate.
有没有办法让5.0中的CalendarView DatePicker调用OnDateChanged()?如果失败了,在CalendarView模式下,如何从DatePicker中检索更改日期?
我面临同样的问题,事情是onDateChange()和onTimeSet()侦听DatePicker和TimePicker没有在带有棒棒糖更新的Nexus设备中调用.
原因在于nexus设备,因为时钟应用程序更新,听众无法正常工作.
解决方法一旦解除对话,您需要创建自己的侦听器并使用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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4181 次 |
| 最近记录: |