2011-08-23 72 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); 
    
  • 重建代码

参考