Исключение нулевого указателя при доступе к Календарю Google - PullRequest
1 голос
/ 23 августа 2011

Я пишу приложение для Android, которому нужно вставить событие в Календарь Google .Я запускаю свое приложение на двух телефонах с Android, и все они успешны.Тем не менее, некоторые сообщения о сбоях от других получены.У них исключение нулевого указателя в последней строке следующего кода.

(Кстати, я уже обработал два разных URI календаря Google, выполнив Есть ли способ доступазаписи календаря без использования gdata-java-client? )

Весь файл исходного кода: 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.: 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 на андроиде.os.Parcel.readException (Parcel.java:1328) в android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:160) в android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:114) в android.content.ContentProviderProxy.вставить (ContentProviderNative.java:408) в android.content.ContentResolver.insert (ContentResolver.java:604) в ming.hkpl.GoogleCalendar.addEvent (GoogleCalendar.java:93)

1 Ответ

1 голос
/ 07 июня 2017

В общем, используйте следующий процесс:

  • Найдите номер строки ошибки в нижней части трассировки стека с пространством имен компании (ming.hkpl.GoogleCalendar.addEvent)
  • Перейти к номеру строки файла, указанного в трассировке стека, в IDE или текстовом редакторе.
    • Добавить точку останова
    • Скомпилируйте код
    • Запустить JDB OR
  • Добавить оператор печати к предыдущей строке, печатая переменную, на которую есть ссылка в строке, которая выдает ошибку. Например:

    System.out.println("Hi");
    System.out.println(driver);
    
  • Перестроить код

Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...