From 9d21f7be3a554a21e2ae8cc319b2ca2e98cc4b16 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Sat, 29 May 2010 01:11:46 -0700 Subject: [PATCH] Fix for NPE that user reported, also made calendar picking logic more robust. --- .../src-legacy/com/timsu/astrid/data/tag/TagController.java | 6 ++++-- astrid/src-legacy/com/timsu/astrid/utilities/Calendars.java | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/astrid/src-legacy/com/timsu/astrid/data/tag/TagController.java b/astrid/src-legacy/com/timsu/astrid/data/tag/TagController.java index 547be4978..0ed73f371 100644 --- a/astrid/src-legacy/com/timsu/astrid/data/tag/TagController.java +++ b/astrid/src-legacy/com/timsu/astrid/data/tag/TagController.java @@ -320,7 +320,9 @@ public class TagController extends AbstractController { /** Closes database resource */ @Override public void close() { - tagDatabase.close(); - tagToTaskMapDatabase.close(); + if(tagDatabase != null) + tagDatabase.close(); + if(tagToTaskMapDatabase != null) + tagToTaskMapDatabase.close(); } } diff --git a/astrid/src-legacy/com/timsu/astrid/utilities/Calendars.java b/astrid/src-legacy/com/timsu/astrid/utilities/Calendars.java index 5e590ba86..4216f09b6 100644 --- a/astrid/src-legacy/com/timsu/astrid/utilities/Calendars.java +++ b/astrid/src-legacy/com/timsu/astrid/utilities/Calendars.java @@ -86,7 +86,7 @@ public class Calendars { int currentSettingIndex = -1; - if (c == null) { + if (c == null || c.getCount() == 0) { // Something went wrong when querying calendars // Let's keep the "Astrid default" only. listPreference @@ -104,7 +104,6 @@ public class Calendars { String[] entries = new String[calendarCount]; String[] entryValues = new String[calendarCount]; - // Iterate calendars one by one, and fill up the list preference try { int row = 0; @@ -135,6 +134,8 @@ public class Calendars { .getString(R.string.prefs_defaultCalendar_default) }); listPreference.setValueIndex(0); listPreference.setEnabled(true); + } else if(currentSettingIndex >= entryValues.length) { + currentSettingIndex = 0; } listPreference.setEntries(entries);