From 031d684b3ec4f015065dc4b9b2b20cdd39bc416d Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sat, 27 Feb 2016 18:26:25 -0500 Subject: [PATCH] Update main activity on notification/widget click --- .../uhabits/HabitBroadcastReceiver.java | 5 ++++ .../java/org/isoron/uhabits/MainActivity.java | 29 ++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/isoron/uhabits/HabitBroadcastReceiver.java b/app/src/main/java/org/isoron/uhabits/HabitBroadcastReceiver.java index bb08eadeb..846760e87 100644 --- a/app/src/main/java/org/isoron/uhabits/HabitBroadcastReceiver.java +++ b/app/src/main/java/org/isoron/uhabits/HabitBroadcastReceiver.java @@ -31,6 +31,7 @@ import android.net.Uri; import android.os.Handler; import android.preference.PreferenceManager; import android.support.v4.app.NotificationCompat; +import android.support.v4.content.LocalBroadcastManager; import org.isoron.helpers.DateHelper; import org.isoron.uhabits.helpers.ReminderHelper; @@ -103,6 +104,10 @@ public class HabitBroadcastReceiver extends BroadcastReceiver habit.save(); dismissNotification(context, habit); + LocalBroadcastManager manager = LocalBroadcastManager.getInstance(context); + Intent refreshIntent = new Intent(MainActivity.ACTION_REFRESH); + manager.sendBroadcast(refreshIntent); + MainActivity.updateWidgets(context); } diff --git a/app/src/main/java/org/isoron/uhabits/MainActivity.java b/app/src/main/java/org/isoron/uhabits/MainActivity.java index 2f135f3b6..b2a960d3c 100644 --- a/app/src/main/java/org/isoron/uhabits/MainActivity.java +++ b/app/src/main/java/org/isoron/uhabits/MainActivity.java @@ -17,13 +17,16 @@ package org.isoron.uhabits; import android.appwidget.AppWidgetManager; +import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.v4.content.LocalBroadcastManager; import android.view.Menu; import android.view.MenuItem; @@ -38,7 +41,11 @@ public class MainActivity extends ReplayableActivity implements ListHabitsFragment.OnHabitClickListener { private ListHabitsFragment listHabitsFragment; - SharedPreferences prefs; + private SharedPreferences prefs; + private BroadcastReceiver receiver; + private LocalBroadcastManager localBroadcastManager; + + public static final String ACTION_REFRESH = "org.isoron.uhabits.ACTION_REFRESH"; @Override protected void onCreate(Bundle savedInstanceState) @@ -50,6 +57,10 @@ public class MainActivity extends ReplayableActivity listHabitsFragment = (ListHabitsFragment) getFragmentManager().findFragmentById(R.id.fragment1); + receiver = new Receiver(); + localBroadcastManager = LocalBroadcastManager.getInstance(this); + localBroadcastManager.registerReceiver(receiver, new IntentFilter(ACTION_REFRESH)); + onStartup(); } @@ -125,4 +136,20 @@ public class MainActivity extends ReplayableActivity intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids); context.sendBroadcast(intent); } + + @Override + protected void onDestroy() + { + localBroadcastManager.unregisterReceiver(receiver); + super.onDestroy(); + } + + class Receiver extends BroadcastReceiver + { + @Override + public void onReceive(Context context, Intent intent) + { + listHabitsFragment.onPostExecuteCommand(null); + } + } }