diff options
author | Fan Zhang <zhfan@google.com> | 2017-05-18 01:14:10 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-05-18 01:14:10 +0000 |
commit | 867c68e76c3115357fdadcee03080e7704919ba7 (patch) | |
tree | 7c634a1422ae7a4b09f799d23b5ffaef305bfa3e /src/com/android/settings/accounts/AccountPreferenceController.java | |
parent | 63c5b41f01236e782e4c59c48f5df89b8048eb25 (diff) | |
parent | 60d26cfffa673c69a151e619b9c5c4738e638082 (diff) | |
download | packages_apps_Settings-867c68e76c3115357fdadcee03080e7704919ba7.tar.gz packages_apps_Settings-867c68e76c3115357fdadcee03080e7704919ba7.tar.bz2 packages_apps_Settings-867c68e76c3115357fdadcee03080e7704919ba7.zip |
Merge "Fix bug where accounts are duplicated in user&account list." into oc-dev am: 2b030aeb65
am: 60d26cfffa
Change-Id: I878bafe5a626e2f6fe9d8f4cfbb89dfeb763c7a0
Diffstat (limited to 'src/com/android/settings/accounts/AccountPreferenceController.java')
-rw-r--r-- | src/com/android/settings/accounts/AccountPreferenceController.java | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java index 2801f045a1..69569da013 100644 --- a/src/com/android/settings/accounts/AccountPreferenceController.java +++ b/src/com/android/settings/accounts/AccountPreferenceController.java @@ -123,9 +123,9 @@ public class AccountPreferenceController extends PreferenceController */ public boolean pendingRemoval; /** - * The map from account name to account preference + * The map from account key to account preference */ - public ArrayMap<CharSequence, AccountTypePreference> accountPreferences = new ArrayMap<>(); + public ArrayMap<String, AccountTypePreference> accountPreferences = new ArrayMap<>(); } public AccountPreferenceController(Context context, SettingsPreferenceFragment parent, @@ -426,7 +426,7 @@ public class AccountPreferenceController extends PreferenceController return; } if (profileData.userInfo.isEnabled()) { - final ArrayMap<CharSequence, AccountTypePreference> preferenceToRemove = + final ArrayMap<String, AccountTypePreference> preferenceToRemove = new ArrayMap<>(profileData.accountPreferences); final ArrayList<AccountTypePreference> preferences = getAccountTypePreferences( profileData.authenticatorHelper, profileData.userInfo.getUserHandle(), @@ -435,18 +435,19 @@ public class AccountPreferenceController extends PreferenceController for (int i = 0; i < count; i++) { final AccountTypePreference preference = preferences.get(i); preference.setOrder(i); - if (!profileData.accountPreferences.containsValue(preference)) { - profileData.preferenceGroup.addPreference(preferences.get(i)); - profileData.accountPreferences.put(preference.getTitle(), preference); + final String key = preference.getKey(); + if (!profileData.accountPreferences.containsKey(key)) { + profileData.preferenceGroup.addPreference(preference); + profileData.accountPreferences.put(key, preference); } } if (profileData.addAccountPreference != null) { profileData.preferenceGroup.addPreference(profileData.addAccountPreference); } - for (CharSequence name : preferenceToRemove.keySet()) { + for (String key : preferenceToRemove.keySet()) { profileData.preferenceGroup.removePreference( - profileData.accountPreferences.get(name)); - profileData.accountPreferences.remove(name); + profileData.accountPreferences.get(key)); + profileData.accountPreferences.remove(key); } } else { profileData.preferenceGroup.removeAll(); @@ -471,8 +472,7 @@ public class AccountPreferenceController extends PreferenceController } private ArrayList<AccountTypePreference> getAccountTypePreferences(AuthenticatorHelper helper, - UserHandle userHandle, - ArrayMap<CharSequence, AccountTypePreference> preferenceToRemove) { + UserHandle userHandle, ArrayMap<String, AccountTypePreference> preferenceToRemove) { final String[] accountTypes = helper.getEnabledAccountTypes(); final ArrayList<AccountTypePreference> accountTypePreferences = new ArrayList<>(accountTypes.length); @@ -497,7 +497,8 @@ public class AccountPreferenceController extends PreferenceController // Add a preference row for each individual account for (Account account : accounts) { - final AccountTypePreference preference = preferenceToRemove.remove(account.name); + final AccountTypePreference preference = + preferenceToRemove.remove(AccountTypePreference.buildKey(account)); if (preference != null) { accountTypePreferences.add(preference); continue; @@ -521,7 +522,7 @@ public class AccountPreferenceController extends PreferenceController fragmentArguments.putParcelable(EXTRA_USER, userHandle); accountTypePreferences.add(new AccountTypePreference( prefContext, mMetricsFeatureProvider.getMetricsCategory(mParent), - account.name, titleResPackageName, titleResId, label, + account, titleResPackageName, titleResId, label, AccountDetailDashboardFragment.class.getName(), fragmentArguments, icon)); } helper.preloadDrawableForType(mContext, accountType); |