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
This commit is contained in:
Alexandra Gherghina
2014-10-21 22:39:03 +01:00
parent 52e57d2d25
commit 14819b0d3d

View File

@@ -99,8 +99,8 @@ public class ManageAccountsSettings extends AccountPreferenceBase
} }
@Override @Override
public void onStart() { public void onResume() {
super.onStart(); super.onResume();
mAuthenticatorHelper.listenToAccountUpdates(); mAuthenticatorHelper.listenToAccountUpdates();
updateAuthDescriptions(); updateAuthDescriptions();
showAccountsIfNeeded(); showAccountsIfNeeded();
@@ -133,11 +133,16 @@ public class ManageAccountsSettings extends AccountPreferenceBase
} }
} }
@Override
public void onPause() {
super.onPause();
mAuthenticatorHelper.stopListeningToAccountUpdates();
}
@Override @Override
public void onStop() { public void onStop() {
super.onStop(); super.onStop();
final Activity activity = getActivity(); final Activity activity = getActivity();
mAuthenticatorHelper.stopListeningToAccountUpdates();
activity.getActionBar().setDisplayOptions(0, ActionBar.DISPLAY_SHOW_CUSTOM); activity.getActionBar().setDisplayOptions(0, ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(null); activity.getActionBar().setCustomView(null);
} }
@@ -231,7 +236,7 @@ public class ManageAccountsSettings extends AccountPreferenceBase
private void showSyncState() { private void showSyncState() {
// Catch any delayed delivery of update messages // Catch any delayed delivery of update messages
if (getActivity() == null) return; if (getActivity() == null || getActivity().isFinishing()) return;
final int userId = mUserHandle.getIdentifier(); final int userId = mUserHandle.getIdentifier();
@@ -377,10 +382,8 @@ public class ManageAccountsSettings extends AccountPreferenceBase
if (mAccountType != null && mFirstAccount != null) { if (mAccountType != null && mFirstAccount != null) {
addAuthenticatorSettings(); addAuthenticatorSettings();
} else { } else {
// There's no account, reset to top-level of settings // There's no account, close activity
Intent settingsTop = new Intent(android.provider.Settings.ACTION_SETTINGS); finish();
settingsTop.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
getActivity().startActivity(settingsTop);
} }
} }