Style action bar during onResume instead of onCreate

am: 50eb81f114

Change-Id: I4259ccfcb36b193a2fa4c745338860c407eeedd6
This commit is contained in:
Fan Zhang
2017-08-02 21:01:16 +00:00
committed by android-build-merger
3 changed files with 26 additions and 18 deletions

View File

@@ -116,7 +116,7 @@ public class AccountDetailDashboardFragment extends DashboardFragment {
mRemoveAccountController = new RemoveAccountPreferenceController(context, this); mRemoveAccountController = new RemoveAccountPreferenceController(context, this);
controllers.add(mRemoveAccountController); controllers.add(mRemoveAccountController);
controllers.add(new AccountHeaderPreferenceController( controllers.add(new AccountHeaderPreferenceController(
context, getLifecycle(), getActivity(), this, getArguments())); context, getLifecycle(), getActivity(), this /* host */, getArguments()));
return controllers; return controllers;
} }

View File

@@ -16,6 +16,9 @@
package com.android.settings.accounts; 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.accounts.Account;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
@@ -31,12 +34,11 @@ import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.accounts.AuthenticatorHelper; import com.android.settingslib.accounts.AuthenticatorHelper;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_ACCOUNT; import com.android.settingslib.core.lifecycle.events.OnResume;
import static com.android.settings.accounts.AccountDetailDashboardFragment.KEY_USER_HANDLE;
public class AccountHeaderPreferenceController extends AbstractPreferenceController public class AccountHeaderPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin { implements PreferenceControllerMixin, LifecycleObserver, OnResume {
private static final String KEY_ACCOUNT_HEADER = "account_header"; private static final String KEY_ACCOUNT_HEADER = "account_header";
@@ -44,14 +46,14 @@ public class AccountHeaderPreferenceController extends AbstractPreferenceControl
private final PreferenceFragment mHost; private final PreferenceFragment mHost;
private final Account mAccount; private final Account mAccount;
private final UserHandle mUserHandle; private final UserHandle mUserHandle;
private final Lifecycle mLifecycle;
private LayoutPreference mHeaderPreference;
public AccountHeaderPreferenceController(Context context, Lifecycle lifecycle, public AccountHeaderPreferenceController(Context context, Lifecycle lifecycle,
Activity activity, PreferenceFragment host, Bundle args) { Activity activity, PreferenceFragment host, Bundle args) {
super(context); super(context);
mActivity = activity; mActivity = activity;
mHost = host; mHost = host;
mLifecycle = lifecycle;
if (args != null && args.containsKey(KEY_ACCOUNT)) { if (args != null && args.containsKey(KEY_ACCOUNT)) {
mAccount = args.getParcelable(KEY_ACCOUNT); mAccount = args.getParcelable(KEY_ACCOUNT);
} else { } else {
@@ -63,6 +65,9 @@ public class AccountHeaderPreferenceController extends AbstractPreferenceControl
} else { } else {
mUserHandle = null; mUserHandle = null;
} }
if (lifecycle != null) {
lifecycle.addObserver(this);
}
} }
@Override @Override
@@ -78,14 +83,15 @@ public class AccountHeaderPreferenceController extends AbstractPreferenceControl
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
final LayoutPreference headerPreference = mHeaderPreference = (LayoutPreference) screen.findPreference(KEY_ACCOUNT_HEADER);
(LayoutPreference) screen.findPreference(KEY_ACCOUNT_HEADER); }
@Override
public void onResume() {
final AuthenticatorHelper helper = new AuthenticatorHelper(mContext, mUserHandle, null); final AuthenticatorHelper helper = new AuthenticatorHelper(mContext, mUserHandle, null);
EntityHeaderController EntityHeaderController
.newInstance(mActivity, mHost, headerPreference.findViewById(R.id.entity_header)) .newInstance(mActivity, mHost, mHeaderPreference.findViewById(R.id.entity_header))
.setRecyclerView(mHost.getListView(), mLifecycle)
.setLabel(mAccount.name) .setLabel(mAccount.name)
.setIcon(helper.getDrawableForType(mContext, mAccount.type)) .setIcon(helper.getDrawableForType(mContext, mAccount.type))
.done(mActivity, true /* rebindButtons */); .done(mActivity, true /* rebindButtons */);

View File

@@ -16,6 +16,10 @@
package com.android.settings.accounts; 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.accounts.Account;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
@@ -26,10 +30,10 @@ import android.support.v7.preference.PreferenceScreen;
import android.widget.TextView; import android.widget.TextView;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.applications.LayoutPreference; import com.android.settings.applications.LayoutPreference;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.accounts.AuthenticatorHelper; import com.android.settingslib.accounts.AuthenticatorHelper;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -44,10 +48,6 @@ import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements; 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) @RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -84,19 +84,21 @@ public class AccountHeaderPreferenceControllerTest {
@Test @Test
@Config(shadows = ShadowAuthenticatorHelper.class) @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"); final Account account = new Account("name1@abc.com", "com.abc");
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putParcelable(AccountDetailDashboardFragment.KEY_ACCOUNT, account); args.putParcelable(AccountDetailDashboardFragment.KEY_ACCOUNT, account);
args.putParcelable(AccountDetailDashboardFragment.KEY_USER_HANDLE, UserHandle.CURRENT); args.putParcelable(AccountDetailDashboardFragment.KEY_USER_HANDLE, UserHandle.CURRENT);
mController = new AccountHeaderPreferenceController(RuntimeEnvironment.application, mController = new AccountHeaderPreferenceController(RuntimeEnvironment.application,
new Lifecycle(), mActivity, mFragment, args); lifecycle, mActivity, mFragment, args);
assertThat(mController.isAvailable()).isTrue(); assertThat(mController.isAvailable()).isTrue();
when(mScreen.findPreference(anyString())).thenReturn(mHeaderPreference); when(mScreen.findPreference(anyString())).thenReturn(mHeaderPreference);
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
lifecycle.onResume();
final CharSequence label = final CharSequence label =
((TextView) mHeaderPreference.findViewById(R.id.entity_header_title)).getText(); ((TextView) mHeaderPreference.findViewById(R.id.entity_header_title)).getText();