diff --git a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoBrowserApiImpl.kt b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoBrowserApiImpl.kt index 6f3dd7f1..a384f544 100644 --- a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoBrowserApiImpl.kt +++ b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoBrowserApiImpl.kt @@ -190,8 +190,16 @@ class GeckoBrowserApiImpl : GeckoBrowserApi { return false } - val nativeFragment = BrowserFragment.create() val fm = fragmentActivity.supportFragmentManager + + // Check if fragment already exists in the container + val existingFragment = fm.findFragmentById(FRAGMENT_CONTAINER_ID) + if (existingFragment is BrowserFragment) { + // Fragment already replaced, no need to do it again + return true + } + + val nativeFragment = BrowserFragment.create() fm.beginTransaction() .replace(FRAGMENT_CONTAINER_ID, nativeFragment) .commitAllowingStateLoss()