2017-10-20 77 views
2

这个代码日期选择器不工作的API 26

Calendar calendarStart = Calendar.getInstance(); 
    startYear = calendarStart.get(Calendar.YEAR) + 543; 
    startMonth = calendarStart.get(Calendar.MONTH); 
    startDay = calendarStart.get(Calendar.DAY_OF_MONTH) - 7; 

    dateStartPickerDialog = new DatePickerDialog(
      AccountReportActivity.this, R.style.DatePicker, 
      AccountReportActivity.this, startYear, startMonth, startDay); 

    dateStartPickerDialog.getDatePicker().setMinDate(calendarStart.getTimeInMillis()); 
    calendarStart.add(Calendar.YEAR, 543); 
    dateStartPickerDialog.getDatePicker().setMaxDate(calendarStart.getTimeInMillis()); 

此错误代码

at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
                    Caused by: java.lang.IllegalArgumentException: timeInMillis must be between the values of getMinDate() and getMaxDate() 
                     at android.widget.DayPickerView.setDate(DayPickerView.java:307) 
                     at android.widget.DayPickerView.setDate(DayPickerView.java:286) 
                     at android.widget.DayPickerView.setDate(DayPickerView.java:275) 
                     at android.widget.DatePickerCalendarDelegate.onDateChanged(DatePickerCalendarDelegate.java:405) 
                     at android.widget.DatePickerCalendarDelegate.init(DatePickerCalendarDelegate.java:376) 
                     at android.widget.DatePicker.init(DatePicker.java:228) 
                     at android.app.DatePickerDialog.<init>(DatePickerDialog.java:133) 
                     at android.app.DatePickerDialog.<init>(DatePickerDialog.java:109) 
                     at com.splanet.aplaysellers.activity.report.AccountReportActivity.setUpCurrentStartDate(AccountReportActivity.java:103) 
                     at com.splanet.aplaysellers.activity.report.AccountReportActivity.initWidget(AccountReportActivity.java:75) 
                     at com.splanet.aplaysellers.activity.report.AccountReportActivity.onCreate(AccountReportActivity.java:51) 
                     at android.app.Activity.performCreate(Activity.java:6980) 
                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213) 
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) 

请帮助我,我试图通过各种渠道来解决问题。它不能解决这个问题。

回答

3

马克斯日期使用System.currentTimeMillis()这将在毫秒数返回当前日期。并为最小使用日历。! 如果你想让你的应用程序工作完全罚款每个Android版本请按照我的示例代码。 Date Picker Example

Calendar calendar = Calendar.getInstance(); 

     year = calendar.get(Calendar.YEAR); 
     month = calendar.get(Calendar.MONTH); 
     day = calendar.get(Calendar.DAY_OF_MONTH); 

     datePickerDialog = new DatePickerDialog(getActivity(), onDateSet, 
       year, month, day); 

     // calendar.add(Calendar.DATE, Constants.DateAndMonth.CURRENT_DAY);//Current day 
     datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis()); 
     // Set the Calendar new date as maximum date of date picker 
     datePickerDialog.getDatePicker().setMaxDate(calendar.getTimeInMillis()); 

     // Subtract 90 days from Calendar updated date 
     calendar.add(Calendar.DATE, -Constants.DateAndMonth.LAST_NINETY_DAY); 

     // Set the Calendar new date as minimum date of date picker 
     datePickerDialog.getDatePicker().setMinDate(calendar.getTimeInMillis()); 

     if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { 
      datePickerDialog.setTitle("");//Prevent Date picker from creating extra Title.! 
     } 
+0

它不工作只API 26 –

+0

没有getMinDate()和getMaxDate()在我的代码 –

+0

dateStartPickerDialog.getDatePicker()setMinDate(calendarStart.getTimeInMillis())。 calendar日历.add(Calendar.YEAR,543); calendarStart.add(Calendar.YEAR,543);dateStartPickerDialog.getDatePicker()。setMaxDate(calendarStart.getTimeInMillis()); 删除这些行。 –

0

设置不同的最小和最大日期日期选择器 试试这个

Calendar calendarStart = Calendar.getInstance(); 
startYear = calendarStart.get(Calendar.YEAR); 
startMonth = calendarStart.get(Calendar.MONTH); 
startDay = calendarStart.get(Calendar.DAY_OF_MONTH) - 7; 

dateStartPickerDialog = new DatePickerDialog(
     AccountReportActivity.this, R.style.DatePicker, 
     AccountReportActivity.this, startYear, startMonth, startDay); 

dateStartPickerDialog.getDatePicker().setMinDate(calendarStart.getTimeInMillis()); 
calendarStart.add(Calendar.YEAR, 543); 
dateStartPickerDialog.getDatePicker().setMaxDate(calendarStart.getTimeInMillis()); 
+0

运行4.4的代码,它会崩溃的setMinDate(calendarStart.getTimeInMillis())由于calendarStart.getTimeInMillis()在我的例子看一看上面的感谢! –

+0

这同我的代码没有什么不同 –