diff options
Diffstat (limited to 'quickstep/src/com/android/quickstep/interaction/TutorialFragment.java')
-rw-r--r-- | quickstep/src/com/android/quickstep/interaction/TutorialFragment.java | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java index a28cf58c35..c91ee81067 100644 --- a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java +++ b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java @@ -25,6 +25,7 @@ import static com.android.quickstep.interaction.GestureSandboxActivity.KEY_USE_T import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Insets; @@ -84,6 +85,9 @@ abstract class TutorialFragment extends GestureSandboxFragment implements OnTouc private DeviceProfile mDeviceProfile; private boolean mIsLargeScreen; private boolean mIsFoldable; + private boolean mOnAttachedToWindowPendingCreate; + + @Nullable private Runnable mOnAttachedOnGlobalLayoutCallback = null; public static TutorialFragment newInstance( TutorialType tutorialType, boolean gestureComplete, boolean fromTutorialMenu) { @@ -174,6 +178,11 @@ abstract class TutorialFragment extends GestureSandboxFragment implements OnTouc .getDeviceProfile(getContext()); mIsLargeScreen = mDeviceProfile.isTablet; mIsFoldable = mDeviceProfile.isTwoPanels; + + if (mOnAttachedToWindowPendingCreate) { + mOnAttachedToWindowPendingCreate = false; + onAttachedToWindow(); + } } public boolean isLargeScreen() { @@ -343,13 +352,27 @@ abstract class TutorialFragment extends GestureSandboxFragment implements OnTouc new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { - changeController(mTutorialType); + runOnAttached(() -> changeController(mTutorialType)); mRootView.getViewTreeObserver().removeOnGlobalLayoutListener(this); } }); } } + private void runOnAttached(Runnable callback) { + mOnAttachedOnGlobalLayoutCallback = callback; + if (getContext() != null) { + onAttached(); + } + } + + private void onAttached() { + if (mOnAttachedOnGlobalLayoutCallback != null) { + mOnAttachedOnGlobalLayoutCallback.run(); + mOnAttachedOnGlobalLayoutCallback = null; + } + } + @Override public boolean onTouch(View view, MotionEvent motionEvent) { if (mTutorialController != null && !isGestureComplete()) { @@ -372,7 +395,17 @@ abstract class TutorialFragment extends GestureSandboxFragment implements OnTouc } @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + onAttached(); + } + + @Override void onAttachedToWindow() { + if (mEdgeBackGestureHandler == null) { + mOnAttachedToWindowPendingCreate = true; + return; + } StatsLogManager statsLogManager = getStatsLogManager(); if (statsLogManager != null) { logTutorialStepShown(statsLogManager); @@ -382,6 +415,7 @@ abstract class TutorialFragment extends GestureSandboxFragment implements OnTouc @Override void onDetachedFromWindow() { + mOnAttachedToWindowPendingCreate = false; mEdgeBackGestureHandler.setViewGroupParent(null); } |