时间选择器值+本地通知的ClassCastException

时间:2018-10-11 17:39:26

标签: codenameone

以下代码为我提供了 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);

1 个答案:

答案 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非常脆弱/令人困惑,因此我们使用该方法提供了更加一致的结果。对于持续时间选择器也是如此。