From 14819b0d3de450334db6785ad4db1fcdab537045 Mon Sep 17 00:00:00 2001 From: Alexandra Gherghina Date: Tue, 21 Oct 2014 22:39:03 +0100 Subject: [PATCH] Close account settings if there's no account to show This makes sure we don't keep the Settings screen on when there are no accounts left to show. Bug: 17713957 Change-Id: I6e1d6819477f051e3a521360aa3138b18fdd3fe2 --- .../accounts/ManageAccountsSettings.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/accounts/ManageAccountsSettings.java b/src/com/android/settings/accounts/ManageAccountsSettings.java index 074176bd716..2d8b70e7b33 100644 --- a/src/com/android/settings/accounts/ManageAccountsSettings.java +++ b/src/com/android/settings/accounts/ManageAccountsSettings.java @@ -99,8 +99,8 @@ public class ManageAccountsSettings extends AccountPreferenceBase } @Override - public void onStart() { - super.onStart(); + public void onResume() { + super.onResume(); mAuthenticatorHelper.listenToAccountUpdates(); updateAuthDescriptions(); showAccountsIfNeeded(); @@ -133,11 +133,16 @@ public class ManageAccountsSettings extends AccountPreferenceBase } } + @Override + public void onPause() { + super.onPause(); + mAuthenticatorHelper.stopListeningToAccountUpdates(); + } + @Override public void onStop() { super.onStop(); final Activity activity = getActivity(); - mAuthenticatorHelper.stopListeningToAccountUpdates(); activity.getActionBar().setDisplayOptions(0, ActionBar.DISPLAY_SHOW_CUSTOM); activity.getActionBar().setCustomView(null); } @@ -231,7 +236,7 @@ public class ManageAccountsSettings extends AccountPreferenceBase private void showSyncState() { // Catch any delayed delivery of update messages - if (getActivity() == null) return; + if (getActivity() == null || getActivity().isFinishing()) return; final int userId = mUserHandle.getIdentifier(); @@ -377,10 +382,8 @@ public class ManageAccountsSettings extends AccountPreferenceBase if (mAccountType != null && mFirstAccount != null) { addAuthenticatorSettings(); } else { - // There's no account, reset to top-level of settings - Intent settingsTop = new Intent(android.provider.Settings.ACTION_SETTINGS); - settingsTop.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - getActivity().startActivity(settingsTop); + // There's no account, close activity + finish(); } }