DatePickerDialog 最大值问题

在使用过程中,如果设置了最大值。然后当选择日期,超过最大值时会崩溃。


E/AndroidRuntime﹕ FATAL EXCEPTION: main

    Process: xxxxxx, PID: 7638
    java.lang.IllegalArgumentException: Time not between Wed May 17 09:39:25 GMT+08:00 2017 and Thu Aug 17 23:59:59 GMT+08:00 2017
            at android.widget.CalendarView.goTo(CalendarView.java:1105)
            at android.widget.CalendarView.setDate(CalendarView.java:935)
            at android.widget.DatePicker.updateCalendarView(DatePicker.java:693)
            at android.widget.DatePicker.access$800(DatePicker.java:75)
            at android.widget.DatePicker$1.onValueChange(DatePicker.java:208)
            at android.widget.NumberPicker.notifyChange(NumberPicker.java:1831)
            at android.widget.NumberPicker.setValueInternal(NumberPicker.java:1617)
            at android.widget.NumberPicker.changeValueByOne(NumberPicker.java:1645)
            at android.widget.NumberPicker.access$200(NumberPicker.java:94)
            at android.widget.NumberPicker$1.onClick(NumberPicker.java:640)
            at android.view.View.performClick(View.java:4438)
            at android.view.View$PerformClick.run(View.java:18439)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5069)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)

            at dalvik.system.NativeStart.main(Native Method)


查看源码,发现是一个逻辑性错误,在设置最大值时,需要把毫秒设置一下可以解决。示例代码如下:



private void init() {
    Calendar minCal = Calendar.getInstance();
    minCal.add(Calendar.MONTH, -3);
    minCal.set(Calendar.HOUR_OF_DAY, 0);
    minCal.set(Calendar.MINUTE, 0);
    minCal.set(Calendar.SECOND, 0);
    minCal.set(Calendar.MILLISECOND, 0);

    Calendar maxCal = Calendar.getInstance();
    maxCal.set(Calendar.HOUR_OF_DAY, 23);
    maxCal.set(Calendar.MINUTE, 59);
    maxCal.set(Calendar.SECOND, 59);
    maxCal.set(Calendar.MILLISECOND, 999);


    DatePicker datePicker = getDatePicker();
    datePicker.setMinDate(minCal.getTimeInMillis());
    datePicker.setMaxDate(maxCal.getTimeInMillis());
}


最大值和最小值一定要修改时分秒。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值