From 12cef917603cc66f2b53c9bcf6be188bb85a6d59 Mon Sep 17 00:00:00 2001 From: Sunny Shao Date: Mon, 30 Dec 2019 18:13:37 +0800 Subject: [PATCH] Update BrandedAccountPreferenceController Use the updateState to decide the preference display due to the displayPreference could not be called while user press BACK key then the upper page gone and bottom page reshow. Fixes: 146989749 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.deviceinfo Change-Id: I00b08b59c533ed0832ed07e6231138dd88084517 --- .../BrandedAccountPreferenceController.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java b/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java index bdd76fca2ae..3543832c3da 100644 --- a/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java +++ b/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java @@ -32,13 +32,13 @@ import com.android.settings.core.SubSettingLauncher; import com.android.settings.overlay.FeatureFactory; public class BrandedAccountPreferenceController extends BasePreferenceController { - private final Account[] mAccounts; + private final AccountFeatureProvider mAccountFeatureProvider; + private Account[] mAccounts; public BrandedAccountPreferenceController(Context context, String key) { super(context, key); - final AccountFeatureProvider accountFeatureProvider = FeatureFactory.getFactory( - mContext).getAccountFeatureProvider(); - mAccounts = accountFeatureProvider.getAccounts(mContext); + mAccountFeatureProvider = FeatureFactory.getFactory(mContext).getAccountFeatureProvider(); + mAccounts = mAccountFeatureProvider.getAccounts(mContext); } @Override @@ -56,8 +56,6 @@ public class BrandedAccountPreferenceController extends BasePreferenceController @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); - final AccountFeatureProvider accountFeatureProvider = FeatureFactory.getFactory( - mContext).getAccountFeatureProvider(); final Preference accountPreference = screen.findPreference(getPreferenceKey()); if (accountPreference != null && (mAccounts == null || mAccounts.length == 0)) { screen.removePreference(accountPreference); @@ -72,7 +70,7 @@ public class BrandedAccountPreferenceController extends BasePreferenceController args.putParcelable(AccountDetailDashboardFragment.KEY_USER_HANDLE, android.os.Process.myUserHandle()); args.putString(AccountDetailDashboardFragment.KEY_ACCOUNT_TYPE, - accountFeatureProvider.getAccountType()); + mAccountFeatureProvider.getAccountType()); new SubSettingLauncher(mContext) .setDestination(AccountDetailDashboardFragment.class.getName()) @@ -83,4 +81,13 @@ public class BrandedAccountPreferenceController extends BasePreferenceController return true; }); } + + @Override + public void updateState(Preference preference) { + super.updateState(preference); + mAccounts = mAccountFeatureProvider.getAccounts(mContext); + if (mAccounts == null || mAccounts.length == 0) { + preference.setVisible(false); + } + } }