From 543bebfc4aa994c8cd9002faf0c205f04f6fe5df Mon Sep 17 00:00:00 2001 From: Tim Su Date: Mon, 25 Oct 2010 16:46:23 -0700 Subject: [PATCH] Fixed force close issues as reported from Android --- .../producteev/ProducteevFilterExposer.java | 2 ++ .../astrid/repeats/RepeatControlSet.java | 10 +++++----- .../astrid/activity/TaskEditActivity.java | 17 ++++++++++++++--- .../todoroo/astrid/service/UpgradeService.java | 3 +-- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevFilterExposer.java index 8d3e75e39..f86be9a10 100644 --- a/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevFilterExposer.java @@ -126,6 +126,8 @@ public class ProducteevFilterExposer extends BroadcastReceiver { TreeSet users = new TreeSet(); for(StoreObject dashboard : dashboards) { ProducteevDashboard elDashboard = new ProducteevDashboard(dashboard); + if(elDashboard == null) + continue; users.addAll(elDashboard.getUsers()); } diff --git a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatControlSet.java b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatControlSet.java index 4ea9055a2..a2b15e7cf 100644 --- a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatControlSet.java @@ -1,7 +1,6 @@ package com.todoroo.astrid.repeats; import java.text.DateFormatSymbols; -import java.text.ParseException; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -13,15 +12,14 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; +import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; +import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.LinearLayout; import android.widget.Spinner; -import android.widget.AdapterView.OnItemSelectedListener; -import android.widget.CompoundButton.OnCheckedChangeListener; -import com.todoroo.astrid.service.StatisticsService; import com.google.ical.values.Frequency; import com.google.ical.values.RRule; import com.google.ical.values.Weekday; @@ -32,6 +30,7 @@ import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.ExceptionService; import com.todoroo.astrid.activity.TaskEditActivity.TaskEditControlSet; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.ui.NumberPicker; import com.todoroo.astrid.ui.NumberPickerDialog; import com.todoroo.astrid.ui.NumberPickerDialog.OnNumberPickedListener; @@ -220,7 +219,8 @@ public class RepeatControlSet implements TaskEditControlSet { // suppress first call to interval.onItemSelected setInterval = true; - } catch (ParseException e) { + } catch (Exception e) { + // invalid RRULE recurrence = ""; //$NON-NLS-1$ exceptionService.reportError("repeat-parse-exception", e); } diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java index 353b67493..dd28d9b60 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java @@ -21,6 +21,7 @@ package com.todoroo.astrid.activity; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collections; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -155,7 +156,8 @@ public final class TaskEditActivity extends TabActivity { private EditText title; - private final ArrayList controls = new ArrayList(); + private final List controls = + Collections.synchronizedList(new ArrayList()); // --- other instance variables @@ -1157,7 +1159,11 @@ public final class TaskEditActivity extends TabActivity { @Override public String writeToModel(Task task) { + if(adapter == null || spinner == null) + return null; HideUntilValue item = adapter.getItem(spinner.getSelectedItemPosition()); + if(item == null) + return null; long value = task.createHideUntil(item.setting, item.date); task.setValue(Task.HIDE_UNTIL, value); return null; @@ -1184,10 +1190,15 @@ public final class TaskEditActivity extends TabActivity { getString(R.string.TEA_reminder_alarm_off), getString(R.string.TEA_reminder_alarm_on), }; - ArrayAdapter adapter = new ArrayAdapter( + final ArrayAdapter adapter = new ArrayAdapter( TaskEditActivity.this, android.R.layout.simple_spinner_item, list); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - mode.setAdapter(adapter); + runOnUiThread(new Runnable() { + @Override + public void run() { + mode.setAdapter(adapter); + } + }); } public void setValue(int flags) { diff --git a/astrid/src/com/todoroo/astrid/service/UpgradeService.java b/astrid/src/com/todoroo/astrid/service/UpgradeService.java index 73ef95475..c6fb23cc7 100644 --- a/astrid/src/com/todoroo/astrid/service/UpgradeService.java +++ b/astrid/src/com/todoroo/astrid/service/UpgradeService.java @@ -66,8 +66,7 @@ public final class UpgradeService { if(context instanceof Activity) { ((Activity)context).runOnUiThread(new Runnable() { public void run() { - if(dialog != null) - dialog.dismiss(); + DialogUtilities.dismissDialog((Activity)context, dialog); // display changelog showChangeLog(context, from);