以下代码为我提供了 java.lang.ClassCastException
long time=timePicker.getDate().getTime();
Display.getInstance().scheduleLocalNotification(notification, time, LocalNotification.REPEAT_DAY);
执行此代码时,出现以下错误:
java.lang.ClassCastException-无法将java.lang.Integer强制转换为java.util.Date
getTime()返回long而不是int,因此代码正确。此问题的原因是什么?
timePicker变量是一个选择器
timePicker=new Picker();
timePicker .setType(Display.PICKER_TYPE_TIME);
答案 0 :(得分:0)
时间选择器不返回日期。您应该将代码替换为:
int DAY = 24 * 60 * 60000;
int time=timePicker.getTime();
Display.getInstance().scheduleLocalNotification(notification, time * 60000 + System.currrentTimeMillis() / DAY * DAY, LocalNotification.REPEAT_DAY);
在这种情况下,时间将是午夜以来的秒数。原因是时间选择器不包含日期部分或时区。对于这两件事,Date
非常脆弱/令人困惑,因此我们使用该方法提供了更加一致的结果。对于持续时间选择器也是如此。