Java.lang.NumberFormatException: Invalid long: "null"

I am creating an event calendar. I - this is an exception java.lang.NumberFormatException: Invalid long: "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()); } } new ArrayList <String> (); 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()); } } new ArrayList <String> (); 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()); } } new ArrayList <String> (); 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()); } } Context context) { 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()); } } { 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()); } } -MM-dd"); 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) 

Why do I get it? someone helps me. Thank you very much in advance.

+4
source share
2 answers

I believe your following statements create a mistake,

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

Just change them as follows and try again.

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

Your field may contain a space that needs to be removed before converting them to the Long Data type.

+1
source

Using startDates.add(getDate(cursor.getLong(3))); endDates.add(getDate(cursor.getLong(4))); startDates.add(getDate(cursor.getLong(3))); endDates.add(getDate(cursor.getLong(4)));

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

0
source

Source: https://habr.com/ru/post/1491807/


All Articles