From 20d53b1f23265a313e25e6307658055073cfed31 Mon Sep 17 00:00:00 2001 From: Dave Miller Date: Tue, 3 May 2016 13:28:00 -0700 Subject: [PATCH] Have Modal dismiss Dialog when the ReactInstance goes away Reviewed By: angelahess Differential Revision: D3252808 fb-gh-sync-id: 1f3085412f409581f161cf2151b251e818851d84 fbshipit-source-id: 1f3085412f409581f161cf2151b251e818851d84 --- .../react/views/modal/ReactModalHostView.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java index c15b493fc..3414429f0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java @@ -24,6 +24,7 @@ import android.view.WindowManager; import com.facebook.infer.annotation.Assertions; import com.facebook.react.R; +import com.facebook.react.bridge.LifecycleEventListener; import com.facebook.react.bridge.ReactContext; import com.facebook.react.common.annotations.VisibleForTesting; import com.facebook.react.uimanager.JSTouchDispatcher; @@ -44,7 +45,7 @@ import com.facebook.react.views.view.ReactViewGroup; * DialogRootViewGroup were part of the hierarchy. Therefore, we forward all view changes * around addition and removal of views to the DialogRootViewGroup. */ -public class ReactModalHostView extends ViewGroup { +public class ReactModalHostView extends ViewGroup implements LifecycleEventListener { // This listener is called when the user presses KeyEvent.KEYCODE_BACK // An event is then passed to JS which can either close or not close the Modal by setting the @@ -66,6 +67,7 @@ public class ReactModalHostView extends ViewGroup { public ReactModalHostView(Context context) { super(context); + ((ReactContext) context).addLifecycleEventListener(this); mHostView = new DialogRootViewGroup(context); } @@ -136,6 +138,22 @@ public class ReactModalHostView extends ViewGroup { mPropertyRequiresNewDialog = true; } + @Override + public void onHostResume() { + // do nothing + } + + @Override + public void onHostPause() { + // do nothing + } + + @Override + public void onHostDestroy() { + // Dismiss the dialog if it is present + dismiss(); + } + @VisibleForTesting public @Nullable Dialog getDialog() { return mDialog;