2011-08-23 41 views
0

我正在編寫一個需要將事件插入Google日曆的Android應用。我在我的兩個android手機上運行我的應用程序,並且都是成功的。但是,收到了一些其他的崩潰報告。它們在以下代碼的最後一行中有空指針異常訪問Google日曆時出現空指針異常

(順便說一句,我已經通過以下處理谷歌日曆的兩個不同的URI Is there a way to access the calendar's entries without using gdata-java-client?

完整的源代碼文件:http://gonow.no-ip.org/hkpl/GoogleCalendar.java

我把這個

GoogleCalendar.addEvent(getContentResolver(),EVENT_TITLE,CONTENT); 
另一個類功能的addEvent

提取內容:

ContentValues event = new ContentValues(); 
event.put("title", title); 
event.put("description", description); 
event.put("calendar_id",calId);  
Calendar cal = Calendar.getInstance(); 
cal.setTime(date); 
cal.add(Calendar.DAY_OF_MONTH, 1);  
long start = cal.getTime().getTime(); 
event.put("dtstart", start);   
cal.add(Calendar.DAY_OF_MONTH, 1); 
long end = cal.getTime().getTime();   
event.put("dtend", end);   
event.put("hasAlarm",1); 
event.put("allDay", 1);   
Uri newEvent = cr.insert(Uri.parse(calanderEventURL), event); <-- exception here 

崩潰報告這裏

了java.lang.RuntimeException:而在 的java在android.os.AsyncTask $ 3.done(AsyncTask.java:200)執行 doInBackground()時發生錯誤。 util.concurrent.FutureTask $ Sync.innerSetException(FutureTask.java:274) at java.util.concurrent.FutureTask.setException(FutureTask.java:125) at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask。 java:308) at java.util.concurrent.FutureTask.run(FutureTask.java:138)at java.util.concurrent.ThreadPool Executor.runWorker(ThreadPoolExecutor.java:1088) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:581) at java.lang.Thread.run(Thread.java:1019)引起: 顯示java.lang.NullPointerException處 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160) android.os.Parcel.readException(Parcel.java:1328)在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils的.java:114) 處 ming.hkpl.GoogleCalendar.addEvent android.content.ContentProviderProxy.insert(ContentProviderNative.java:408) 在android.content.ContentResolver.insert(ContentResolver.java:604) (GoogleCalendar.java:93)

+0

什麼Ø第93行?也許你可以在你的代碼中添加行號。 –

+0

正如我上面提到的,它在代碼 的最後一行即ie。 Uri newEvent = cr.insert(Uri.parse(calanderEventURL),event);感謝:) – Bear

+0

我很困惑。這不就是說cr是無效的嗎?對不起,如果我失去了明顯的東西! –

回答

0

一般情況下,使用以下過程:

  • 查找與公司的命名空間(ming.hkpl堆棧跟蹤底部的失敗的行號。 GoogleCalendar.addEvent)
  • 轉到一個IDE或文本編輯器在堆棧跟蹤中提到的文件的行號
    • 添加斷點
    • 編譯合作德
    • 運行加多寶 或
  • 添加一個print語句前行,打印在拋出一個錯誤的行引用的變量。例如:

    System.out.println("Hi"); 
    System.out.println(driver); 
    
  • 重建代碼

參考