Widgets: show error message instead of crashing

pull/114/head
Alinson S. Xavier 10 years ago
parent 13d34945b4
commit 04e8432522

@ -107,15 +107,19 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider
Habit habit = Habit.get(habitId);
if(habit == null)
{
RemoteViews errorView = new RemoteViews(context.getPackageName(),
R.layout.widget_error);
manager.updateAppWidget(widgetId, errorView);
drawErrorWidget(context, manager, widgetId);
return;
}
new RenderWidgetTask(widgetId, context, habit, manager).execute();
}
private void drawErrorWidget(Context context, AppWidgetManager manager, int widgetId)
{
RemoteViews errorView = new RemoteViews(context.getPackageName(), R.layout.widget_error);
manager.updateAppWidget(widgetId, errorView);
}
protected abstract void refreshCustomViewData(View widgetView);
private void savePreview(Context context, int widgetId, Bitmap widgetCache)
@ -230,6 +234,8 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider
@Override
protected void onPostExecute(Void aVoid)
{
try
{
widgetView.invalidate();
widgetView.setDrawingCacheEnabled(true);
@ -241,9 +247,16 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider
//savePreview(context, widgetId, drawingCache);
PendingIntent onClickIntent = getOnClickPendingIntent(context, habit);
if(onClickIntent != null) remoteViews.setOnClickPendingIntent(R.id.imageView, onClickIntent);
if (onClickIntent != null) remoteViews.setOnClickPendingIntent(R.id.imageView,
onClickIntent);
manager.updateAppWidget(widgetId, remoteViews);
}
catch (Exception e)
{
drawErrorWidget(context, manager, widgetId);
e.printStackTrace();
}
super.onPostExecute(aVoid);
}

@ -35,7 +35,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Habit not found"
android:text="Error drawing widget"
android:textColor="#ffffff"/>
</LinearLayout>
Loading…
Cancel
Save