Style action bar during onResume instead of onCreate

Change-Id: I628266e7062e514d2044c9e32668db23094d82e6
Merged-In: Ib57bf128b644737b5a34238ec85ca6d740543c5f
Fix: 64284689
Bug: 64297479
Test: robotests
diff --git a/src/com/android/settings/accounts/AccountDetailDashboardFragment.java b/src/com/android/settings/accounts/AccountDetailDashboardFragment.java
index dd34a0f..3d853fe 100644
--- a/src/com/android/settings/accounts/AccountDetailDashboardFragment.java
+++ b/src/com/android/settings/accounts/AccountDetailDashboardFragment.java
@@ -114,7 +114,7 @@
         mRemoveAccountController = new RemoveAccountPreferenceController(context, this);
         controllers.add(mRemoveAccountController);
         controllers.add(new AccountHeaderPreferenceController(
-                context, getLifecycle(), getActivity(), this, getArguments()));
+                context, getLifecycle(), getActivity(), this /* host */, getArguments()));
         return controllers;
     }
 
diff --git a/src/com/android/settings/accounts/AccountHeaderPreferenceController.java b/src/com/android/settings/accounts/AccountHeaderPreferenceController.java
index d0ce58d..5cbd1b0 100644
--- a/src/com/android/settings/accounts/AccountHeaderPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountHeaderPreferenceController.java
@@ -16,6 +16,9 @@
 
 package com.android.settings.accounts;
 
+import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_ACCOUNT;
+import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_USER_HANDLE;
+
 import android.accounts.Account;
 import android.app.Activity;
 import android.content.Context;
@@ -30,11 +33,11 @@
 import com.android.settings.widget.EntityHeaderController;
 import com.android.settingslib.accounts.AuthenticatorHelper;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.core.lifecycle.LifecycleObserver;
+import com.android.settingslib.core.lifecycle.events.OnResume;
 
-import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_ACCOUNT;
-import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_USER_HANDLE;
-
-public class AccountHeaderPreferenceController extends PreferenceController {
+public class AccountHeaderPreferenceController extends PreferenceController
+        implements LifecycleObserver, OnResume {
 
     private static final String KEY_ACCOUNT_HEADER = "account_header";
 
@@ -42,14 +45,14 @@
     private final PreferenceFragment mHost;
     private final Account mAccount;
     private final UserHandle mUserHandle;
-    private final Lifecycle mLifecycle;
+
+    private LayoutPreference mHeaderPreference;
 
     public AccountHeaderPreferenceController(Context context, Lifecycle lifecycle,
             Activity activity, PreferenceFragment host, Bundle args) {
         super(context);
         mActivity = activity;
         mHost = host;
-        mLifecycle = lifecycle;
         if (args != null && args.containsKey(KEY_ACCOUNT)) {
             mAccount = args.getParcelable(KEY_ACCOUNT);
         } else {
@@ -61,6 +64,9 @@
         } else {
             mUserHandle = null;
         }
+        if (lifecycle != null) {
+            lifecycle.addObserver(this);
+        }
     }
 
     @Override
@@ -76,14 +82,15 @@
     @Override
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
-        final LayoutPreference headerPreference =
-                (LayoutPreference) screen.findPreference(KEY_ACCOUNT_HEADER);
+        mHeaderPreference = (LayoutPreference) screen.findPreference(KEY_ACCOUNT_HEADER);
+    }
 
+    @Override
+    public void onResume() {
         final AuthenticatorHelper helper = new AuthenticatorHelper(mContext, mUserHandle, null);
 
         EntityHeaderController
-                .newInstance(mActivity, mHost, headerPreference.findViewById(R.id.entity_header))
-                .setRecyclerView(mHost.getListView(), mLifecycle)
+                .newInstance(mActivity, mHost, mHeaderPreference.findViewById(R.id.entity_header))
                 .setLabel(mAccount.name)
                 .setIcon(helper.getDrawableForType(mContext, mAccount.type))
                 .done(mActivity, true /* rebindButtons */);
diff --git a/tests/robotests/src/com/android/settings/accounts/AccountHeaderPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/AccountHeaderPreferenceControllerTest.java
index 008c0bc..4dce0c6 100644
--- a/tests/robotests/src/com/android/settings/accounts/AccountHeaderPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/AccountHeaderPreferenceControllerTest.java
@@ -16,6 +16,10 @@
 
 package com.android.settings.accounts;
 
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.when;
+
 import android.accounts.Account;
 import android.app.Activity;
 import android.content.Context;
@@ -26,10 +30,10 @@
 import android.widget.TextView;
 
 import com.android.settings.R;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.applications.LayoutPreference;
 import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settingslib.accounts.AuthenticatorHelper;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
@@ -44,10 +48,6 @@
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
 
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.when;
-
 
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -84,19 +84,21 @@
 
     @Test
     @Config(shadows = ShadowAuthenticatorHelper.class)
-    public void displayPreference_shouldDisplayAccountInEntityHeader() {
+    public void onResume_shouldDisplayAccountInEntityHeader() {
+        final Lifecycle lifecycle = new Lifecycle();
         final Account account = new Account("name1@abc.com", "com.abc");
         Bundle args = new Bundle();
         args.putParcelable(AccountDetailDashboardFragment.KEY_ACCOUNT, account);
         args.putParcelable(AccountDetailDashboardFragment.KEY_USER_HANDLE, UserHandle.CURRENT);
         mController = new AccountHeaderPreferenceController(RuntimeEnvironment.application,
-                new Lifecycle(), mActivity, mFragment, args);
+                lifecycle, mActivity, mFragment, args);
 
         assertThat(mController.isAvailable()).isTrue();
 
         when(mScreen.findPreference(anyString())).thenReturn(mHeaderPreference);
 
         mController.displayPreference(mScreen);
+        lifecycle.onResume();
 
         final CharSequence label =
                 ((TextView) mHeaderPreference.findViewById(R.id.entity_header_title)).getText();