45aa1a67b0
Co-authored-by: Tomek Zawadzki <tomekzawadzki98@gmail.com> Co-authored-by: vineyardbovines <spencerfpope@gmail.com>
34 lines
1.6 KiB
Diff
34 lines
1.6 KiB
Diff
diff --git a/android/src/main/java/com/swmansion/rnscreens/Screen.kt b/android/src/main/java/com/swmansion/rnscreens/Screen.kt
|
|
index 76bb694854b29d7f779f38244cd48113b429ea1f..fd402ac938862e8d39c5467c1b5c86c4e7eb0c83 100644
|
|
--- a/android/src/main/java/com/swmansion/rnscreens/Screen.kt
|
|
+++ b/android/src/main/java/com/swmansion/rnscreens/Screen.kt
|
|
@@ -16,6 +16,7 @@ import androidx.annotation.RequiresApi
|
|
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
|
import androidx.core.view.children
|
|
import androidx.fragment.app.Fragment
|
|
+import androidx.recyclerview.widget.RecyclerView
|
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
|
import com.facebook.react.bridge.ReactContext
|
|
import com.facebook.react.uimanager.PixelUtil
|
|
@@ -462,7 +463,7 @@ class Screen(
|
|
endTransitionRecursive(childView.toolbar)
|
|
}
|
|
|
|
- if (childView is ViewGroup) {
|
|
+ if (childView is ViewGroup && childView !is RecyclerView) {
|
|
endTransitionRecursive(childView)
|
|
}
|
|
}
|
|
@@ -491,7 +492,10 @@ class Screen(
|
|
startTransitionRecursive(child.toolbar)
|
|
}
|
|
|
|
- if (child is ViewGroup) {
|
|
+ // Transition a RecyclerView as one unit. Marking its recyclable children as
|
|
+ // transitioning keeps their parent set after removal, so RecyclerView crashes
|
|
+ // when it tries to recycle them during the screen transition.
|
|
+ if (child is ViewGroup && child !is RecyclerView) {
|
|
startTransitionRecursive(child)
|
|
}
|
|
}
|