Fix the highlight error after unfolding the device
Unfolding a device generates mutiple lifecycle events and resets the highlight key. Check if there's only one activity in the task and then perform the reset. Fix: 209016927 Test: manual Change-Id: I49988fa913270d35a04436777433b7669afb72df
This commit is contained in:
@@ -311,7 +311,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void launchDeepLinkIntentToRight() {
|
private void launchDeepLinkIntentToRight() {
|
||||||
if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)) {
|
if (!mIsEmbeddingActivityEnabled) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,12 +19,14 @@ package com.android.settings.homepage;
|
|||||||
import static com.android.settings.search.actionbar.SearchMenuController.NEED_SEARCH_ICON_IN_ACTION_BAR;
|
import static com.android.settings.search.actionbar.SearchMenuController.NEED_SEARCH_ICON_IN_ACTION_BAR;
|
||||||
import static com.android.settingslib.search.SearchIndexable.MOBILE;
|
import static com.android.settingslib.search.SearchIndexable.MOBILE;
|
||||||
|
|
||||||
|
import android.app.ActivityManager;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
@@ -53,6 +55,7 @@ public class TopLevelSettings extends DashboardFragment implements
|
|||||||
private static final String SAVED_HIGHLIGHT_MIXIN = "highlight_mixin";
|
private static final String SAVED_HIGHLIGHT_MIXIN = "highlight_mixin";
|
||||||
private static final String PREF_KEY_SUPPORT = "top_level_support";
|
private static final String PREF_KEY_SUPPORT = "top_level_support";
|
||||||
|
|
||||||
|
private boolean mIsEmbeddingActivityEnabled;
|
||||||
private TopLevelHighlightMixin mHighlightMixin;
|
private TopLevelHighlightMixin mHighlightMixin;
|
||||||
private boolean mFirstStarted = true;
|
private boolean mFirstStarted = true;
|
||||||
|
|
||||||
@@ -122,7 +125,9 @@ public class TopLevelSettings extends DashboardFragment implements
|
|||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext())) {
|
mIsEmbeddingActivityEnabled =
|
||||||
|
ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext());
|
||||||
|
if (!mIsEmbeddingActivityEnabled) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,15 +143,23 @@ public class TopLevelSettings extends DashboardFragment implements
|
|||||||
public void onStart() {
|
public void onStart() {
|
||||||
if (mFirstStarted) {
|
if (mFirstStarted) {
|
||||||
mFirstStarted = false;
|
mFirstStarted = false;
|
||||||
} else if (!ActivityEmbeddingUtils.isTwoPaneResolution(getActivity())) {
|
} else if (mIsEmbeddingActivityEnabled && isOnlyOneActivityInTask()
|
||||||
|
&& !ActivityEmbeddingUtils.isTwoPaneResolution(getActivity())) {
|
||||||
// Set default highlight menu key for 1-pane homepage since it will show the placeholder
|
// Set default highlight menu key for 1-pane homepage since it will show the placeholder
|
||||||
// page once changing back to 2-pane.
|
// page once changing back to 2-pane.
|
||||||
|
Log.i(TAG, "Set default menu key");
|
||||||
setHighlightMenuKey(getString(SettingsHomepageActivity.DEFAULT_HIGHLIGHT_MENU_KEY),
|
setHighlightMenuKey(getString(SettingsHomepageActivity.DEFAULT_HIGHLIGHT_MENU_KEY),
|
||||||
/* scrollNeeded= */ false);
|
/* scrollNeeded= */ false);
|
||||||
}
|
}
|
||||||
super.onStart();
|
super.onStart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isOnlyOneActivityInTask() {
|
||||||
|
final ActivityManager.RunningTaskInfo taskInfo = getSystemService(ActivityManager.class)
|
||||||
|
.getRunningTasks(1).get(0);
|
||||||
|
return taskInfo.numActivities == 1;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSaveInstanceState(Bundle outState) {
|
public void onSaveInstanceState(Bundle outState) {
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
@@ -225,8 +238,7 @@ public class TopLevelSettings extends DashboardFragment implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
|
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
|
||||||
if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext())
|
if (!mIsEmbeddingActivityEnabled || !(getActivity() instanceof SettingsHomepageActivity)) {
|
||||||
|| !(getActivity() instanceof SettingsHomepageActivity)) {
|
|
||||||
return super.onCreateAdapter(preferenceScreen);
|
return super.onCreateAdapter(preferenceScreen);
|
||||||
}
|
}
|
||||||
return mHighlightMixin.onCreateAdapter(this, preferenceScreen);
|
return mHighlightMixin.onCreateAdapter(this, preferenceScreen);
|
||||||
|
Reference in New Issue
Block a user