Android DatePickerDialog CalendarView 的标题不一致

标签 android android-datepicker datepickerdialog calendarview

我正在创建一个 DatePickerDialog,就像在 the documentation 中所做的那样.但是,我注意到 CalendarView 的标题(即今天的“2012 年 12 月”)在 Spinner 中设置年份时不会立即更改>s。我看到周已正确更改,并且我可以根据 onSelectedDayChange 回调和适当的日期(月、月日、年、工作日)设置对话框上的标题。此外,如果在 Spinner 中更改月份,则 CalendarView 会立即更新。这包括,如果在更改月份之前更改了年份,则可以正确显示所选年份。如果 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;
}

最佳答案

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

关于Android DatePickerDialog CalendarView 的标题不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924644/

相关文章:

java - 如何在 Android DatePicker 中禁用以前的日期?

java - Unresolved Java DatePickerDialog 方法

android - 返回 Activity 而不创建新实例

android - SurfaceView 到位图

Android动画-旋转图像不规则移动

android - 使用 dialogfragment 从 datepicker 获取日期

android - 使用 android 5.0 的三星 DatePicker 崩溃

android - 更改 DatePicker 标题文本颜色

java - DatePicker onDateSet 方法未运行

android - 表格布局列间距