diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java index 7b1ba63c521..8424b487de9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java @@ -343,6 +343,9 @@ public abstract class DevSupportManagerBase implements DevSupportManager { new Runnable() { @Override public void run() { + // Keep a copy of the latest error to be shown by the RedBoxSurface + updateLastErrorInfo(message, stack, errorCookie, errorType); + if (mRedBoxSurfaceDelegate == null) { @Nullable SurfaceDelegate redBoxSurfaceDelegate = createSurfaceDelegate("RedBox"); if (redBoxSurfaceDelegate != null) { @@ -361,8 +364,6 @@ public abstract class DevSupportManagerBase implements DevSupportManager { return; } - // The RedBox surface delegate will always show the latest error - updateLastErrorInfo(message, stack, errorCookie, errorType); mRedBoxSurfaceDelegate.show(); } }); diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.java index 97ef306afa8..2043dee3381 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.java @@ -42,6 +42,15 @@ public class RedBoxDialogSurfaceDelegate implements SurfaceDelegate { // used here. RedBoxHandler redBoxHandler = mDevSupportManager.getRedBoxHandler(); Activity context = mDevSupportManager.getCurrentActivity(); + if (context == null || context.isFinishing()) { + @Nullable String message = mDevSupportManager.getLastErrorTitle(); + FLog.e( + ReactConstants.TAG, + "Unable to launch redbox because react activity " + + "is not available, here is the error that redbox would've displayed: " + + (message != null ? message : "N/A")); + return; + } // Create a new RedBox when currentActivity get updated mRedBoxContentView = new RedBoxContentView(context); mRedBoxContentView