From 9c3c57f7aeced1dad6f7aca5552d01f696f8ea26 Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Thu, 22 May 2014 11:27:43 -0700 Subject: DO NOT MERGE: Fix bug #15161058 Stability: ISE in Settings:Fragment DashboardSummary{588de71} not attached to Activity - prevent rebuilding the UI until the fragment got attached Change-Id: I6d5fcbce2581f3fc9900f1ca4fc8178ee959061e (cherry picked from commit 53d76860a53c1463d182d4f3d28ce8e9f48454f3) --- .../android/settings/dashboard/DashboardSummary.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java index 73dcd17..4aee7be 100644 --- a/src/com/android/settings/dashboard/DashboardSummary.java +++ b/src/com/android/settings/dashboard/DashboardSummary.java @@ -49,12 +49,12 @@ public class DashboardSummary extends Fragment implements OnAccountsUpdateListen private AuthenticatorHelper mAuthHelper; private boolean mAccountListenerAdded; - private static final int MSG_BUILD_CATEGORIES = 1; + private static final int MSG_REBUILD_UI = 1; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { - case MSG_BUILD_CATEGORIES: { + case MSG_REBUILD_UI: { final Context context = getActivity(); rebuildUI(context); } break; @@ -80,6 +80,11 @@ public class DashboardSummary extends Fragment implements OnAccountsUpdateListen } private void rebuildUI(Context context) { + if (!isAdded()) { + Log.w(LOG_TAG, "Cannot build the DashboardSummary UI yet as the Fragment is not added"); + return; + } + long start = System.currentTimeMillis(); final Resources res = getResources(); @@ -131,7 +136,7 @@ public class DashboardSummary extends Fragment implements OnAccountsUpdateListen mAccountListenerAdded = true; } - rebuildCategories(); + sendRebuildUI(); } @Override @@ -176,9 +181,9 @@ public class DashboardSummary extends Fragment implements OnAccountsUpdateListen } } - private void rebuildCategories() { - if (!mHandler.hasMessages(MSG_BUILD_CATEGORIES)) { - mHandler.sendEmptyMessage(MSG_BUILD_CATEGORIES); + private void sendRebuildUI() { + if (!mHandler.hasMessages(MSG_REBUILD_UI)) { + mHandler.sendEmptyMessage(MSG_REBUILD_UI); } } @@ -186,6 +191,6 @@ public class DashboardSummary extends Fragment implements OnAccountsUpdateListen public void onAccountsUpdated(Account[] accounts) { final SettingsActivity sa = (SettingsActivity) getActivity(); sa.setNeedToRebuildCategories(true); - rebuildCategories(); + sendRebuildUI(); } } -- cgit v1.1