Android java.lang.NumberFormatException:无效的long:“;空”;

Android java.lang.NumberFormatException:无效的long:“;空”;,android,exception,calendar,Android,Exception,Calendar,我正在创建活动日历。我发现这个异常java.lang.NumberFormatException:无效长:“null” Utility.java public class Utility { public static ArrayList<String> nameOfEvent = new ArrayList<String>(); public static ArrayList<String> startDates = new ArrayLi

我正在创建活动日历。我发现这个异常
java.lang.NumberFormatException:无效长:“null”

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());
    }
}

为什么我会得到这个?谁来帮我。事先非常感谢..

我相信您的以下陈述是在制造错误

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())));
您的字段可能包含空白,在将其转换为长数据类型之前,您需要删除该空白。

使用
startdate.add(getDate(cursor.getLong(3));
add(getDate(cursor.getLong(4))

而不是
startdate.add(getDate(Long.parseLong(cursor.getString(3)));

add(getDate(Long.parseLong(cursor.getString(4)))

您也可以上传代码吗?您正在将一个字符串解析为长字符串,该字符串为空。出现问题的是您的
实用程序。readCalendarEvent()
,而不是
CalendarView
@Vigby或查看我上面发布的代码。@Aprian CalendarView在我的类名中查看
Utility.readCalendarEvent()
显示错误
无法对基元类型long调用trim()
startDates.add(getDate(Long.parseLong(cursor.getString(3).trim())));
endDates.add(getDate(Long.parseLong(cursor.getString(4).trim())));