summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaumya Prakash <saumyaprakash@google.com>2023-12-13 20:57:20 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2023-12-13 20:57:20 +0000
commitfc97e5339b7a62352c9195125bb793ae3546a9ab (patch)
treec31a258f8bc4a2fbc2e40d074899e1c55e098932
parent8fa129e9a8dafea4f22117f84a4f7e1cf91f921d (diff)
parentec514d054cf1f670e5b4f9808bcf4f93c75e1119 (diff)
downloadLauncher3-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.java25
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;