diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java index 2d8f1ba..708f130 100644 --- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java +++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java @@ -55,14 +55,18 @@ public class NavigationModule extends ReactContextBaseJavaModule { reactContext.addLifecycleEventListener(new LifecycleEventListenerAdapter() { @Override public void onHostResume() { - eventEmitter = new EventEmitter(reactContext); - navigator().setEventEmitter(eventEmitter); - layoutFactory.init( - activity(), - eventEmitter, - navigator().getChildRegistry(), - ((NavigationApplication) activity().getApplication()).getExternalComponents() - ); + try { + eventEmitter = new EventEmitter(reactContext); + navigator().setEventEmitter(eventEmitter); + layoutFactory.init( + activity(), + eventEmitter, + navigator().getChildRegistry(), + ((NavigationApplication) activity().getApplication()).getExternalComponents() + ); + } catch (ClassCastException e) { + // The most current activity is not a NavigationActivity + } } }); } @@ -201,8 +205,12 @@ public class NavigationModule extends ReactContextBaseJavaModule { protected void handle(Runnable task) { UiThread.post(() -> { - if (getCurrentActivity() != null && !activity().isFinishing()) { - task.run(); + try { + if (getCurrentActivity() != null && !activity().isFinishing()) { + task.run(); + } + } catch (ClassCastException e) { + // The most current activity is not a NavigationActivity } }); } diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java index 6b28fc7..8bb2a76 100644 --- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java +++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java @@ -1,10 +1,12 @@ package com.reactnativenavigation.viewcontrollers.viewcontroller; import android.app.Activity; +import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.view.ViewManager; import android.view.ViewTreeObserver; +import android.view.inputmethod.InputMethodManager; import com.reactnativenavigation.options.Options; import com.reactnativenavigation.options.params.Bool; @@ -275,6 +277,8 @@ public abstract class ViewController implements ViewTreeObs ((Destroyable) view).destroy(); } if (view != null) { + InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); view.getViewTreeObserver().removeOnGlobalLayoutListener(this); view.setOnHierarchyChangeListener(null); if (view.getParent() instanceof ViewGroup) { diff --git a/node_modules/react-native-navigation/lib/ios/RNNOverlayWindow.m b/node_modules/react-native-navigation/lib/ios/RNNOverlayWindow.m index 815e1c6..a35a087 100644 --- a/node_modules/react-native-navigation/lib/ios/RNNOverlayWindow.m +++ b/node_modules/react-native-navigation/lib/ios/RNNOverlayWindow.m @@ -1,5 +1,7 @@ #import "RNNOverlayWindow.h" #import "RNNReactView.h" +#import +#import @implementation RNNOverlayWindow @@ -7,7 +9,9 @@ UIView *hitTestResult = [super hitTest:point withEvent:event]; if ([hitTestResult isKindOfClass:[UIWindow class]] || - [hitTestResult.subviews.firstObject isKindOfClass:RNNReactView.class]) { + [hitTestResult.subviews.firstObject isKindOfClass:RNNReactView.class] || + [hitTestResult isKindOfClass:[RNCSafeAreaView class]] || + [hitTestResult isKindOfClass:[RNCSafeAreaProvider class]]) { return nil; }