我正在开发一个简单的日历,它将事件和每个事件的时间存储在2个不同的哈希映射中,一个用于事件,另一个用于相应事件的时间,这是我的代码:
SimpleDateFormat evTime = new SimpleDateFormat("HH:mm");
SimpleDateFormat month = new SimpleDateFormat("MMMM - YYYY");
SimpleDateFormat day = new SimpleDateFormat("MMM dd yyyy");
HashMap<Date, ArrayList<String>> hmap = new HashMap<>();
HashMap<Date, ArrayList<String>> hmap2 = new HashMap<>();
void eventMaker(String d, String ev) {
Date date = null;
Date time = null;
try {
date = day.parse(d);
time = evTime.parse(d);
} catch (ParseException e) {
e.printStackTrace();
}
long epoch = date.getTime();
Event event = new Event(Color.RED,epoch,ev);
compactCalendar.addEvent(event);
if(!hmap.containsKey(date)){
ArrayList<String> eventList = new ArrayList<>();
eventList.add(ev);
hmap.put(date,eventList);
ArrayList<String> eventTimes = new ArrayList<>();
eventTimes.add(time.toString());
hmap2.put(date,eventTimes);
}
else{
ArrayList<String> eventList = hmap.get(date);
eventList.add(ev);
hmap.put(date,eventList);
ArrayList<String> eventTimes = hmap2.get(date);
eventTimes.add(time.toString());
hmap2.put(date,eventTimes);
}
}
问题是变量(时间)保持为空,导致崩溃,我想知道为什么?
答案 0 :(得分:1)
对不起,伙计们有一个我没注意到的解析异常。我只是误用了解析和格式化方法......很抱歉给您带来不便。
答案 1 :(得分:0)
您可以修复nullpointerexception,但需要以不同方式解决该ParseException。
尝试扔掉它
void eventMaker(String d, String ev) throws ParseException
然后删除那里的try catch,并在你调用该方法的任何地方执行
运行后,检查logcat消息以查看日期格式是否错误