2

the documentation처럼 완료되는 DatePickerDialog을 생성 중입니다. 그러나 CalendarView의 제목 (즉, 오늘의 12 월 2012)은 Spinner 초로 설정하면 즉시 변경되지 않습니다. 나는 주가 올바르게 바뀌 었음을 알았고 적절한 날짜 (월, 달, 일, 주, 일)로 된 onSelectedDayChange 콜백을 기반으로 대화창에 제목을 설정할 수 있습니다. 또한 Spinner에서 월이 변경되면 즉시 CalendarView이 업데이트됩니다. 이는 월이 변경되기 전에 연도가 변경된 경우 올바르게 선택한 연도를 표시하는 것을 포함합니다. CalendarView을 다른 달로 스크롤하면 연도도 올바른 연도로 조정됩니다.Android DatePickerDialog CalendarView의 제목 불일치

이것은 CalendarView이 날짜가 설정 될 때 단순히 제목 (아마 최적화?)을 다시 그리지 않는다는 것을 의미하는 것으로 보입니다. 내가 뭔가 잘못하고 있는거야? 이것에 대한 해결책이 있습니까? 아니면 구현의 버그입니까? 여기

내 코드입니다 : 다른 답을 앞으로 오지 않고 다른 사람이 있기 때문에 내가 정의 DialogFragment을 대신 DatePickerCalendarView 수 있도록, 그리고이 문제를 해결 가지고,

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

답변

0

보고 그 수치 날짜 선택기와 별도의 CalendarView을 가지고 있습니다. 실제로는 CalendarView을 기반으로 한 내 구현으로 디스플레이 및 Otto 이벤트 버스를 조정할 수 있습니다. 그런 다음 숫자 날짜 선택 도구를 설정할 때마다 CalendarView이 설정되도록 할 수 있습니다.

관련 문제