2013-07-17 2 views
4

Я создаю календарь событий. Я это исключение java.lang.NumberFormatException: Invalid long: “null”java.lang.NumberFormatException: Недопустимый длинный: «null»

CalendarView.java

Utility.java

public class Utility { 
    public static ArrayList<String> nameOfEvent = new ArrayList<String>(); 
    public static ArrayList<String> startDates = new ArrayList<String>(); 
    public static ArrayList<String> endDates = new ArrayList<String>(); 
    public static ArrayList<String> descriptions = new ArrayList<String>(); 

    public static ArrayList<String> readCalendarEvent(Context context) { 
     Cursor cursor = context.getContentResolver() 
       .query(Uri.parse("content://com.android.calendar/events"), 
         new String[] { "calendar_id", "title", "description", 
           "dtstart", "dtend", "eventLocation" }, null, 
         null, null); 
     cursor.moveToFirst(); 
     // fetching calendars name 
     String CNames[] = new String[cursor.getCount()]; 

     // fetching calendars id 
     nameOfEvent.clear(); 
     startDates.clear(); 
     endDates.clear(); 
     descriptions.clear(); 
     for (int i = 0; i < CNames.length; i++) { 

      nameOfEvent.add(cursor.getString(1)); 
      startDates.add(getDate(Long.parseLong(cursor.getString(3)))); 
      endDates.add(getDate(Long.parseLong(cursor.getString(4)))); 
      descriptions.add(cursor.getString(2)); 
      CNames[i] = cursor.getString(1); 
      cursor.moveToNext(); 

     } 
     return nameOfEvent; 
    } 

    public static String getDate(long milliSeconds) { 
     SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(milliSeconds); 
     return formatter.format(calendar.getTime()); 
    } 
} 

Logcat

E/AndroidRuntime(2990): java.lang.NumberFormatException: Invalid long: "null" 
E/AndroidRuntime(2990): at java.lang.Long.invalidLong(Long.java:125) 
E/AndroidRuntime(2990): at java.lang.Long.parseLong(Long.java:342) 
E/AndroidRuntime(2990): at java.lang.Long.parseLong(Long.java:319) 
E/AndroidRuntime(2990): at com.examples.android.calendar.Utility.readCalendarEvent(Utility.java:36) 
E/AndroidRuntime(2990): at com.examples.android.calendar.CalendarView$1.run(CalendarView.java:184) 

Почему им получить это? кто-нибудь мне помогает. Большое спасибо заранее ..

+2

Вы можете загрузить код, а? – Vigbyor

+3

Вы разбираете строку с длинным, а строка равна нулю. –

+1

Это ваш 'Utility.readCalendarEvent()', который имеет проблему, а не 'CalendarView' – Aprian

ответ

1

Я считаю, что ваши следующие утверждения создания ошибки,

startDates.add(getDate(Long.parseLong(cursor.getString(3)))); 
endDates.add(getDate(Long.parseLong(cursor.getString(4)))); 

Просто измените их следующим образом и повторите попытку.

startDates.add(getDate(Long.parseLong(cursor.getString(3).trim()))); 
endDates.add(getDate(Long.parseLong(cursor.getString(4).trim()))); 

Ваше поле может содержать пробелы, которые необходимо удалить, прежде чем преобразовывать их в формат Long Data.

+0

Показывает ошибку 'Невозможно вызвать trim() для примитивного типа long' –

+0

@OneManArmy, opps one bracket error, позвольте мне исправить. – Vigbyor

+2

теперь он показывает 'java.lang.NullPointerException' с той же ошибкой .. –

0

Использование startDates.add(getDate(cursor.getLong(3))); endDates.add(getDate(cursor.getLong(4)));

вместо startDates.add(getDate(Long.parseLong(cursor.getString(3)))); endDates.add(getDate(Long.parseLong(cursor.getString(4))));

Смежные вопросы