From 92b20d89a64a3cd7203ebfa111ffe105c12982e2 Mon Sep 17 00:00:00 2001 From: Saumya Prakash Date: Thu, 21 Mar 2024 22:27:15 +0000 Subject: [PATCH] Fix incorrect fragment in gesture tutorial when rotating the screen This change makes the current fragment load on configuration changes for the gesture navigation tutorial. Previously, the old fragment would be recreated causing inconsistencies when rotating the screen. Not marking a flag as this change is for both the previous gesture tutorial and the current one. Fix: 317162126 Test: Run the tutorial and rotate the screen after each step. The tutorial should progress like normal. Flag: N/A Change-Id: I09c40006dd0ef6e9e78fa44e36962a678918420a (cherry picked from commit c028cc7699458791bfdb009f44c1d59a937bfbf1) --- .../quickstep/interaction/GestureSandboxActivity.java | 11 ++--------- .../quickstep/interaction/GestureSandboxFragment.java | 4 ++++ .../android/quickstep/interaction/MenuFragment.java | 5 +++++ .../quickstep/interaction/TutorialFragment.java | 5 +++++ 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java b/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java index 4198e2da1d..4f1dbbe87b 100644 --- a/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java +++ b/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java @@ -59,7 +59,6 @@ public class GestureSandboxActivity extends FragmentActivity { @Nullable private TutorialType[] mTutorialSteps; private GestureSandboxFragment mCurrentFragment; - private GestureSandboxFragment mPendingFragment; private int mCurrentStep; private int mNumSteps; @@ -177,22 +176,16 @@ public class GestureSandboxActivity extends FragmentActivity { && getResources().getConfiguration().orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; - GestureSandboxFragment recreatedFragment = - showRotationPrompt || mPendingFragment == null - ? null : mPendingFragment.recreateFragment(); showFragment(showRotationPrompt ? new RotationPromptFragment() - : recreatedFragment == null - ? mCurrentFragment : recreatedFragment); + : mCurrentFragment.canRecreateFragment() + ? mCurrentFragment.recreateFragment() : mCurrentFragment); } else { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } } private void showFragment(@NonNull GestureSandboxFragment fragment) { - if (mCurrentFragment.recreateFragment() != null) { - mPendingFragment = mCurrentFragment; - } mCurrentFragment = fragment; getSupportFragmentManager().beginTransaction() .replace(R.id.gesture_tutorial_fragment_container, mCurrentFragment) diff --git a/quickstep/src/com/android/quickstep/interaction/GestureSandboxFragment.java b/quickstep/src/com/android/quickstep/interaction/GestureSandboxFragment.java index 08f298965c..03bdd5d7e6 100644 --- a/quickstep/src/com/android/quickstep/interaction/GestureSandboxFragment.java +++ b/quickstep/src/com/android/quickstep/interaction/GestureSandboxFragment.java @@ -28,6 +28,10 @@ public abstract class GestureSandboxFragment extends Fragment { void onDetachedFromWindow() {} + boolean canRecreateFragment() { + return false; + } + @Nullable GestureSandboxFragment recreateFragment() { return null; diff --git a/quickstep/src/com/android/quickstep/interaction/MenuFragment.java b/quickstep/src/com/android/quickstep/interaction/MenuFragment.java index dbf141b987..8ead3dd8bd 100644 --- a/quickstep/src/com/android/quickstep/interaction/MenuFragment.java +++ b/quickstep/src/com/android/quickstep/interaction/MenuFragment.java @@ -38,6 +38,11 @@ public final class MenuFragment extends GestureSandboxFragment { return new MenuFragment(); } + @Override + boolean canRecreateFragment() { + return true; + } + @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { diff --git a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java index c91ee81067..0fafb94d1e 100644 --- a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java +++ b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java @@ -114,6 +114,11 @@ abstract class TutorialFragment extends GestureSandboxFragment implements OnTouc return newInstance(tutorialType, isGestureComplete(), mFromTutorialMenu); } + @Override + boolean canRecreateFragment() { + return true; + } + @NonNull abstract TutorialType getDefaultTutorialType();