Browse Source

Handle NPE when showing Overlay before setRoot is called

Rejecting the promise is a temporary solution, Overlay should not be coupled to root.
Guy Carmeli 6 years ago
parent
commit
e4db9e6419

+ 6
- 1
lib/android/app/src/main/java/com/reactnativenavigation/presentation/OverlayManager.java View File

1
 package com.reactnativenavigation.presentation;
1
 package com.reactnativenavigation.presentation;
2
 
2
 
3
+import android.support.annotation.Nullable;
3
 import android.view.ViewGroup;
4
 import android.view.ViewGroup;
4
 
5
 
5
 import com.reactnativenavigation.utils.CommandListener;
6
 import com.reactnativenavigation.utils.CommandListener;
10
 public class OverlayManager {
11
 public class OverlayManager {
11
     private final HashMap<String, ViewController> overlayRegistry = new HashMap<>();
12
     private final HashMap<String, ViewController> overlayRegistry = new HashMap<>();
12
 
13
 
13
-    public void show(ViewGroup root, ViewController overlay, CommandListener listener) {
14
+    public void show(@Nullable ViewGroup root, ViewController overlay, CommandListener listener) {
15
+        if (root == null) {
16
+            listener.onError("Can't show Overlay before setRoot is called. This will be resolved in #3899");
17
+            return;
18
+        }
14
         overlayRegistry.put(overlay.getId(), overlay);
19
         overlayRegistry.put(overlay.getId(), overlay);
15
         overlay.setOnAppearedListener(() -> listener.onSuccess(overlay.getId()));
20
         overlay.setOnAppearedListener(() -> listener.onSuccess(overlay.getId()));
16
         root.addView(overlay.getView());
21
         root.addView(overlay.getView());