summaryrefslogtreecommitdiff
path: root/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'quickstep/src/com/android/quickstep/interaction/TutorialFragment.java')
-rw-r--r--quickstep/src/com/android/quickstep/interaction/TutorialFragment.java36
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);
}