2016-06-06 2 views
0

Я внедрил в своей деятельности DatePickerFragment. Этот DatePicker имеет минимальную дату и максимальную дату для выбора.DatePicker взрывается при попытке выбрать максимальную дату

Проблема заключается в Android версии 4.1.2, когда я пытаюсь открыть DatePicker, по щелчку, он виснет. На Android Verion 5 не происходит (дисплей из DatePicker отличается)

Это часть кода, когда выбора даты explotes:

public static class DatePickerFragment extends DialogFragment 
     implements DatePickerDialog.OnDateSetListener { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the picker 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 
     Date maxDate; 
     Date minDate; 
     // datepicker 
     DatePickerDialog dig = new DatePickerDialog(getActivity(), this, ((ReservarTurnos)getActivity()).anio, ((ReservarTurnos)getActivity()).mes, ((ReservarTurnos)getActivity()).dia); 
     dig.getDatePicker().setCalendarViewShown(false); 
     // maxima fecha 
     ((ReservarTurnos)getActivity()).cc.add(Calendar.DAY_OF_MONTH, +10); 
     maxDate = ((ReservarTurnos)getActivity()).cc.getTime(); 
     dig.getDatePicker().setMaxDate(maxDate.getTime()); 
     // minima fecha 
     ((ReservarTurnos)getActivity()).cc.add(Calendar.DAY_OF_MONTH, -10); 
     minDate = ((ReservarTurnos)getActivity()).cc.getTime(); 
     dig.getDatePicker().setMinDate(minDate.getTime()); 


     // Create a new instance of DatePickerDialog and return it 
     return dig; 
    } 

Это линия, где выбор даты explotes:

dig.getDatePicker().setMinDate(minDate.getTime()); 

Это messagge ошибка:

06-06 13:24:17.709 5018-5018/com.sourcey.model E/AndroidRuntime: FATAL EXCEPTION: main 
                     java.lang.IllegalArgumentException: Time not between Mon Jun 06 13:24:16 ART 2016 and Thu Jun 16 13:24:16 ART 2016 
                      at android.widget.CalendarView.goTo(CalendarView.java:1103) 
                      at android.widget.CalendarView.setMinDate(CalendarView.java:761) 
                      at android.widget.DatePicker.setMinDate(DatePicker.java:344) 
                      at com.sourcey.model.ReservarTurnos$DatePickerFragment.onCreateDialog(ReservarTurnos.java:753) 
                      at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:308) 
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955) 
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138) 
                      at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740) 
                      at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501) 
                      at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458) 
                      at android.os.Handler.handleCallback(Handler.java:615) 
                      at android.os.Handler.dispatchMessage(Handler.java:92) 
                      at android.os.Looper.loop(Looper.java:137) 
                      at android.app.ActivityThread.main(ActivityThread.java:4950) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:511) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) 
                      at dalvik.system.NativeStart.main(Native Method) 

Кто-то может мне помочь? Благодаря!

ответ

0

Я думаю, вы не можете иметь точный отзыв.

dig.getDatePicker().setMinDate(minDate.getTime()+10); 

Это может вам помочь.

+0

не работает это решение –

0

Попробуйте это:

setMinDate(System.currentTimeMillis() - 1000); 

А также множество mindate код перед maxdate.

0

Я нашел решение: Мы должны поставить:

minDate = ((ReservarTurnos)getActivity()).cc.getTime(); 
     dig.getDatePicker().setMinDate(minDate.getTime()); 

, прежде чем:

 ((ReservarTurnos)getActivity()).cc.add(Calendar.DAY_OF_MONTH, +10); 
     maxDate = ((ReservarTurnos)getActivity()).cc.getTime(); 
     dig.getDatePicker().setMaxDate(maxDate.getTime()); 
     // minima fecha 
     ((ReservarTurnos)getActivity()).cc.add(Calendar.DAY_OF_MONTH, -10);