diff --git a/packages/react-native-gesture-handler/android/kls_database.db b/packages/react-native-gesture-handler/android/kls_database.db new file mode 100644 index 0000000000..ad03a71948 Binary files /dev/null and b/packages/react-native-gesture-handler/android/kls_database.db differ diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerDetectorView.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerDetectorView.kt index b7d7b9d065..b53c1cdec2 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerDetectorView.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerDetectorView.kt @@ -128,6 +128,15 @@ class RNGestureHandlerDetectorView(context: Context) : ReactViewGroup(context) { eventDispatcher?.dispatchEvent(event) } + fun onViewDrop() { + val registry = RNGestureHandlerModule.registries[moduleId] + ?: throw Exception("Tried to access a non-existent registry") + for (tag in attachedHandlers) { + registry.detachHandler(tag) + attachedHandlers.remove(tag) + } + } + companion object { private enum class GestureHandlerMutation { Attach, diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerDetectorViewManager.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerDetectorViewManager.kt index 06e4f51669..22092feebe 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerDetectorViewManager.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerDetectorViewManager.kt @@ -36,4 +36,9 @@ class RNGestureHandlerDetectorViewManager : override fun setModuleId(view: RNGestureHandlerDetectorView, value: Int) { view.setModuleId(value) } + + override fun onDropViewInstance(view: RNGestureHandlerDetectorView) { + view.onViewDrop() + super.onDropViewInstance(view) + } }