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:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user