【问题标题】:Null pointer exception when accessing Google Calendar访问 Google 日历时出现空指针异常
【发布时间】:2011-11-01 14:35:57
【问题描述】:

我正在编写一个需要将事件插入 Google 日历的 Android 应用。我在我的两部安卓手机上运行我的应用程序,一切都成功了。但是,会收到其他人的一些崩溃报告。它们在以下代码的最后一行有空指针异常。

(顺便说一句,我已经按照Is there a way to access the calendar's entries without using gdata-java-client?处理了谷歌日历的两个不同URI)

整个源代码文件:http://gonow.no-ip.org/hkpl/GoogleCalendar.java

我通过这个在另一个类中调用函数addEvent

GoogleCalendar.addEvent(getContentResolver(),EVENT_TITLE,CONTENT);

提取:

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: 执行时出错 doInBackground() 在 android.os.AsyncTask$3.done(AsyncTask.java:200) 在 java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274) 在 java.util.concurrent.FutureTask.setException(FutureTask.java:125) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 在 java.lang.Thread.run(Thread.java:1019) 引起: java.lang.NullPointerException 在 android.os.Parcel.readException(Parcel.java:1328) 在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160) 在 android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114) 在 android.content.ContentProviderProxy.insert(ContentProviderNative.java:408) 在 android.content.ContentResolver.insert(ContentResolver.java:604) 在 ming.hkpl.GoogleCalendar.addEvent(GoogleCalendar.java:93)

【问题讨论】:

  • 第 93 行是什么?也许您可以在代码中添加行号。
  • 正如我上面提到的,它位于代码的最后一行,即。 Uri newEvent = cr.insert(Uri.parse(calanderEventURL), event);谢谢:)
  • 我很困惑。这不只是意味着 cr 为空吗?抱歉,如果我遗漏了一些明显的东西!
  • 对不起,让我上传我的整个源代码
  • @Bear:请使用 Google 日历 GData API 修改用户的 Google 日历。

标签: java android debugging calendar


【解决方案1】:

一般情况下,使用以下流程:

  • 在带有公司命名空间 (ming.hkpl.GoogleCalendar.addEvent) 的堆栈跟踪底部查找失败的行号
  • 在 IDE 或文本编辑器中转到堆栈跟踪中提到的文件的行号
    • 添加断点
    • 编译代码
    • 运行 jdb 或
  • 在上一行添加一个打印语句,打印在引发错误的行中引用的变量。例如:

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

参考文献

【讨论】:

    猜你喜欢
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    相关资源
    最近更新 更多