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
This commit is contained in:
Sunny Shao
2019-12-30 18:13:37 +08:00
parent e780606358
commit 12cef91760

View File

@@ -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);
}
}
}