2017-05-28 63 views
0

我開發一個Android應用程序,我使用一個HashMap來存儲一些數據的應用程序正常工作時,我定義的ArrayList這樣的Hashmap與ArrayList中的值的Android

ArrayList<String> eventList = new ArrayList<>(); 

,但應用程序崩潰時我改變它到:

ArrayList<String> eventList = hmap.get(date); 

我需要知道爲什麼? 這裏是在情況下,你需要看看

HashMap<Date, ArrayList<String>> hmap = new HashMap<>(); 
void eventMaker(String d, String ev) { 
    Date date = null; 
    try { 
      date = df.parse(d); 
    } catch (ParseException e) { 
      e.printStackTrace(); 
    } 
    long epoch = date.getTime(); 
    Event event = new Event(Color.RED,epoch,ev); 
    compactCalendar.addEvent(event); 
    ArrayList<String> eventList = new ArrayList<>(); 
    eventList.add(ev); 
    hmap.put(date,eventList); 
} 
+0

什麼是你的'LogCat'消息顯示 – MDMalik

+0

的java.lang .RuntimeException:無法啓動活動ComponentInfo {com.example.awarrior.calendar/com.example.awarrior.calendar.MainActivity}:java.lang.NullPointerException:試圖調用虛擬方法'boolean java.util.ArrayList.add(java .lang.Object)'null對象引用 –

+0

java.lang.NullPointerException:試圖調用虛擬方法'boolean java.util.ArrayList.add(java.lang.Object)'在空對象引用 –

回答

0

您需要的Hashmap的值轉換爲所需類型的整體功能。

ArrayList<String> eventList =(ArrayList<String>) hmap.get(date); 
+0

謝謝,但它沒有解決它。 –

+0

如果只有一個字符串ev,那麼你爲什麼使用ArrayList? –

+0

不可以多次調用該函數,但我想存儲以前的事件 –

0

的問題是,我試圖讓一個鍵的值不存在,我解決了這個問題是這樣的:

if(!hmap.containsKey(date)){ 
      ArrayList<String> eventList =new ArrayList<>(); 
      eventList.add(ev); 
      hmap.put(date,eventList); 
     } 
     else{ 
      ArrayList<String> eventList = hmap.get(date); 
      eventList.add(ev); 
      hmap.put(date,eventList); 
     }