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

相关问题