diff --git a/android/src/main/java/com/google/android/react/navsdk/NavViewManager.java b/android/src/main/java/com/google/android/react/navsdk/NavViewManager.java index 3680a4a0..9e8a78f8 100644 --- a/android/src/main/java/com/google/android/react/navsdk/NavViewManager.java +++ b/android/src/main/java/com/google/android/react/navsdk/NavViewManager.java @@ -305,18 +305,20 @@ public void onDropViewInstance(@NonNull FrameLayout view) { controllerSink.clear(); } - FragmentActivity activity = (FragmentActivity) reactContext.getCurrentActivity(); - if (activity == null) return; - WeakReference weakReference = fragmentMap.remove(viewId); if (weakReference != null) { IMapViewFragment fragment = weakReference.get(); if (fragment != null && fragment.isAdded()) { - activity - .getSupportFragmentManager() - .beginTransaction() - .remove((Fragment) fragment) - .commitNowAllowingStateLoss(); + try { + ((Fragment) fragment) + .getParentFragmentManager() + .beginTransaction() + .remove((Fragment) fragment) + .commitNowAllowingStateLoss(); + } catch (IllegalStateException e) { + // FragmentManager already destroyed mid-teardown; the fragment is torn down with its + // host Activity anyway. + } } } }