Java 日期选择器不适用于API 26
此代码Java 日期选择器不适用于API 26,java,android,Java,Android,此代码 Calendar calendarStart = Calendar.getInstance(); startYear = calendarStart.get(Calendar.YEAR) + 543; startMonth = calendarStart.get(Calendar.MONTH); startDay = calendarStart.get(Calendar.DAY_OF_MONTH) - 7; dateStartPickerDialog =
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)
在com.android.internal.os.zyote$MethodAndArgsCaller.run(zyote.java:240)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
原因:java.lang.IllegalArgumentException:timeInMillis的值必须介于getMinDate()和getMaxDate()之间
位于android.widget.DayPickerView.setDate(DayPickerView.java:307)
位于android.widget.DayPickerView.setDate(DayPickerView.java:286)
位于android.widget.DayPickerView.setDate(DayPickerView.java:275)
位于android.widget.DatePickerCalendarDelegate.onDateChanged(DatePickerCalendarDelegate.java:405)
位于android.widget.DatePickerCalendarDelegate.init(DatePickerCalendarDelegate.java:376)
位于android.widget.DatePicker.init(DatePicker.java:228)
在android.app.DatePickerDialog上(DatePickerDialog.java:133)
在android.app.DatePickerDialog上(DatePickerDialog.java:109)
在com.splanet.aplaysells.activity.report.AccountReportActivity.setUpCurrentStartDate(AccountReportActivity.java:103)上
在com.splanet.aplaysells.activity.report.AccountReportActivity.initWidget(AccountReportActivity.java:75)上
在com.splanet.aplaysells.activity.report.AccountReportActivity.onCreate上(AccountReportActivity.java:51)
位于android.app.Activity.performCreate(Activity.java:6980)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)上
请帮助我尝试通过各种渠道解决这个问题。它无法解决此问题。将不同的最小和最大日期设置为日期选择器 试试这个
将不同的最小和最大日期设置为日期选择器 试试这个
使用
System.currentTimeMillis()
作为最大日期,它将以毫秒为单位返回当前日期。和最小使用压光机。!
如果你想让你的应用程序在每一个Android版本上都能完全正常工作,请遵循我的示例代码
使用
System.currentTimeMillis()
作为最大日期,它将以毫秒为单位返回当前日期。和最小使用压光机。!
如果你想让你的应用程序在每一个Android版本上都能完全正常工作,请遵循我的示例代码
在4.4上运行此代码,由于calendarStart.getTimeInMillis()的原因,它将在setMinDate(calendarStart.getTimeInMillis()上崩溃。请看一下我上面的示例,谢谢。!在4.4上运行此代码,由于calendarStart.getTimeInMillis()的原因,它将在setMinDate(calendarStart.getTimeInMillis()上崩溃。请看一下我上面的示例,谢谢。!dateStartPickerDialog.getDatePicker().setMinDate(calendarStart.getTimeInMillis());calendarStart.add(Calendar.YEAR,543);dateStartPickerDialog.getDatePicker().setMaxDate(calendarStart.getTimeInMillis());拆下这些线。!欢迎@PhattarapongYodwiset感谢并投票。!dateStartPickerDialog.getDatePicker().setMinDate(calendarStart.getTimeInMillis());calendarStart.add(Calendar.YEAR,543);dateStartPickerDialog.getDatePicker().setMaxDate(calendarStart.getTimeInMillis());拆下这些线。!欢迎@PhattarapongYodwiset感谢并投票。!您是否使用三星设备进行测试?您是否使用三星设备进行测试?
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());
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.!
}