Android DatePickerDialog CalendarView的标题不一致

时间:2012-12-18 00:40:18

标签: android android-datepicker datepickerdialog calendarview

我正在创建DatePickerDialog,就像在the documentation中完成的那样。但是,我注意到CalendarView的年份在Spinner中设置时,onSelectedDayChange的标题(即“2012年12月”)将不会立即改变。我看到周数已正确更改,我可以根据Spinner回调设置对话框中的标题,其中包含适当的日期(月,月,日,年,日)。此外,如果在CalendarView s中更改月份,则会立即更新CalendarView。这包括,如果在月份更改之前年份已更改,则正确显示所选年份。如果CalendarView滚动到其他月份,那么年份也会调整为显示正确的年份。

这似乎暗示public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { /** Name of the date stored in a {@link Bundle} */ public static final String KEY_DATE = "key.DatePickerFragment.DATE"; @Override public Dialog onCreateDialog(Bundle icicle) { final Bundle arguments = getArguments(); Time date = arguments == null ? TimeMachine.getTimeFromArray(getArguments().getIntArray(KEY_DATE)) : null; if (date == null) date = TimeMachine.getToday(); _dialog_window = new DatePickerDialog(getActivity(), this, date.year, date.month, date.monthDay); final CalendarView calendar_view = _dialog_window.getDatePicker().getCalendarView(); calendar_view.setOnDateChangeListener( new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(CalendarView _, int year, int month, int day) { updateTitle(TimeMachine.getTimeFromArray(new int[]{ year, month, day })); } } ); // Sets the title updateTitle(date); // Create a new instance of DatePickerDialog and return it return _dialog_window; } @Override public void onDateSet(DatePicker _, int year, int month, int day) { final Time date = new Time(); date.set(day, month, year); } private void updateTitle(Time date) { _dialog_window.setTitle(date.format(" %A, %B %e, %Y")); } /** The Dialog window */ private DatePickerDialog _dialog_window; } 只是在设置日期时不重绘标题(可能是优化?)。我做错了什么吗?这个问题有方法解决吗?或者它是实施中的错误?

这是我的代码:

{{1}}

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题并提交了错误报告:http://code.google.com/p/android/issues/detail?id=53875

答案 1 :(得分:0)

由于没有其他人提出任何其他答案,我解决了这个问题,因为我没有启用CalendarView上的DatePicker,而是自定义DialogFragment有一个数字日期选择器和一个单独的CalendarView(实际上我自己的重新实现基于真实CalendarView,以允许调整它的显示和奥托事件总线)。然后我可以确保每次设置数字日期选择器时都设置CalendarView