Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android DatePickerDialog日历视图';标题不一致_Android_Android Datepicker_Datepickerdialog_Calendarview - Fatal编程技术网

Android DatePickerDialog日历视图';标题不一致

Android DatePickerDialog日历视图';标题不一致,android,android-datepicker,datepickerdialog,calendarview,Android,Android Datepicker,Datepickerdialog,Calendarview,我正在创建一个日期选择器对话框,就像在中所做的那样。但是,我注意到当在微调器中设置年份时,日历视图的标题(即今天的“2012年12月”)不会立即更改。我看到周已正确更改,我可以根据onSelectedDayChange回调设置对话框标题,并使用适当的日期(月、月、日、年、周)。此外,如果在微调器中更改了月份,则日历视图将立即更新。这包括,如果在月份更改之前更改了年份,则正确显示所选年份。如果日历视图滚动到其他月份,则该年也会进行调整,以显示正确的年份 这似乎意味着在设置日期时,CalendarV

我正在创建一个
日期选择器对话框
,就像在中所做的那样。但是,我注意到当在
微调器中设置年份时,
日历视图的标题(即今天的“2012年12月”)不会立即更改。我看到周已正确更改,我可以根据
onSelectedDayChange
回调设置对话框标题,并使用适当的日期(月、月、日、年、周)。此外,如果在
微调器中更改了月份,则
日历视图将立即更新。这包括,如果在月份更改之前更改了年份,则正确显示所选年份。如果
日历视图
滚动到其他月份,则该年也会进行调整,以显示正确的年份

这似乎意味着在设置日期时,
CalendarView
只是没有重新绘制标题(可能是优化?)。我做错什么了吗?有解决办法吗?或者它是实现中的一个bug

这是我的密码:

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

鉴于没有其他人给出任何其他答案,我绕过了这个问题,没有在
日期选择器上启用
日历视图
,而是创建了一个自定义的
对话框片段
,其中有一个数字日期选择器和一个单独的
日历视图
(实际上,我自己基于real
CalendarView
重新实现,以允许对其显示和Otto事件总线进行调整)。然后,我可以确保每次设置数字日期选择器时都设置了
CalendarView

我也遇到了同样的问题,并提交了错误报告: