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
This commit is contained in:
Fabrice Di Meglio
2014-05-22 11:27:43 -07:00
parent b644f29313
commit 53d76860a5

View File

@@ -49,12 +49,12 @@ public class DashboardSummary extends Fragment implements OnAccountsUpdateListen
private AuthenticatorHelper mAuthHelper; private AuthenticatorHelper mAuthHelper;
private boolean mAccountListenerAdded; private boolean mAccountListenerAdded;
private static final int MSG_BUILD_CATEGORIES = 1; private static final int MSG_REBUILD_UI = 1;
private Handler mHandler = new Handler() { private Handler mHandler = new Handler() {
@Override @Override
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
switch (msg.what) { switch (msg.what) {
case MSG_BUILD_CATEGORIES: { case MSG_REBUILD_UI: {
final Context context = getActivity(); final Context context = getActivity();
rebuildUI(context); rebuildUI(context);
} break; } break;
@@ -80,6 +80,11 @@ public class DashboardSummary extends Fragment implements OnAccountsUpdateListen
} }
private void rebuildUI(Context context) { 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(); long start = System.currentTimeMillis();
final Resources res = getResources(); final Resources res = getResources();
@@ -131,7 +136,7 @@ public class DashboardSummary extends Fragment implements OnAccountsUpdateListen
mAccountListenerAdded = true; mAccountListenerAdded = true;
} }
rebuildCategories(); sendRebuildUI();
} }
@Override @Override
@@ -176,9 +181,9 @@ public class DashboardSummary extends Fragment implements OnAccountsUpdateListen
} }
} }
private void rebuildCategories() { private void sendRebuildUI() {
if (!mHandler.hasMessages(MSG_BUILD_CATEGORIES)) { if (!mHandler.hasMessages(MSG_REBUILD_UI)) {
mHandler.sendEmptyMessage(MSG_BUILD_CATEGORIES); mHandler.sendEmptyMessage(MSG_REBUILD_UI);
} }
} }
@@ -186,6 +191,6 @@ public class DashboardSummary extends Fragment implements OnAccountsUpdateListen
public void onAccountsUpdated(Account[] accounts) { public void onAccountsUpdated(Account[] accounts) {
final SettingsActivity sa = (SettingsActivity) getActivity(); final SettingsActivity sa = (SettingsActivity) getActivity();
sa.setNeedToRebuildCategories(true); sa.setNeedToRebuildCategories(true);
rebuildCategories(); sendRebuildUI();
} }
} }