diff options
author | Saumya Prakash <saumyaprakash@google.com> | 2023-12-13 20:57:20 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2023-12-13 20:57:20 +0000 |
commit | fc97e5339b7a62352c9195125bb793ae3546a9ab (patch) | |
tree | c31a258f8bc4a2fbc2e40d074899e1c55e098932 | |
parent | 8fa129e9a8dafea4f22117f84a4f7e1cf91f921d (diff) | |
parent | ec514d054cf1f670e5b4f9808bcf4f93c75e1119 (diff) | |
download | Launcher3-fc97e5339b7a62352c9195125bb793ae3546a9ab.tar.gz |
Merge "Check that onAttach() is called before onResume() to prevent NPE." into main
-rw-r--r-- | quickstep/src/com/android/quickstep/interaction/TutorialFragment.java | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java index 69c15a5973..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; @@ -86,6 +87,8 @@ abstract class TutorialFragment extends GestureSandboxFragment implements OnTouc private boolean mIsFoldable; private boolean mOnAttachedToWindowPendingCreate; + @Nullable private Runnable mOnAttachedOnGlobalLayoutCallback = null; + public static TutorialFragment newInstance( TutorialType tutorialType, boolean gestureComplete, boolean fromTutorialMenu) { TutorialFragment fragment = getFragmentForTutorialType(tutorialType, fromTutorialMenu); @@ -349,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()) { @@ -378,6 +395,12 @@ 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; |