2013-07-17 109 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()))); 

您的字段可能包含需要在將它們轉換爲長數據類型之前刪除的空白區域。

+0

顯示錯誤'不能在長原始類型上調用trim()' –

+0

@OneManArmy,選擇一個括號錯誤,讓我糾正它。 – 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))));

相關問題