File tree Expand file tree Collapse file tree 5 files changed +10
-6
lines changed
android/src/main/java/com/swmansion/rnscreens Expand file tree Collapse file tree 5 files changed +10
-6
lines changed Original file line number Diff line number Diff line change @@ -33,12 +33,14 @@ import com.swmansion.rnscreens.events.HeaderHeightChangeEvent
33
33
import com.swmansion.rnscreens.events.SheetDetentChangedEvent
34
34
import com.swmansion.rnscreens.ext.asScreenStackFragment
35
35
import com.swmansion.rnscreens.ext.parentAsViewGroup
36
+ import com.swmansion.rnscreens.gamma.common.FragmentProviding
36
37
37
38
@SuppressLint(" ViewConstructor" ) // Only we construct this view, it is never inflated.
38
39
class Screen (
39
40
val reactContext : ThemedReactContext ,
40
41
) : FabricEnabledViewGroup(reactContext),
41
- ScreenContentWrapper .OnLayoutCallback {
42
+ ScreenContentWrapper .OnLayoutCallback ,
43
+ FragmentProviding {
42
44
val fragment: Fragment ?
43
45
get() = fragmentWrapper?.fragment
44
46
@@ -120,6 +122,8 @@ class Screen(
120
122
layoutParams = WindowManager .LayoutParams (WindowManager .LayoutParams .TYPE_APPLICATION )
121
123
}
122
124
125
+ override fun getAssociatedFragment (): Fragment ? = fragment
126
+
123
127
/* *
124
128
* ScreenContentWrapper notifies us here on it's layout. It is essential for implementing
125
129
* `fitToContents` for formSheets, as this is first entry point where we can acquire
Original file line number Diff line number Diff line change @@ -176,7 +176,7 @@ open class ScreenContainer(
176
176
private fun setupFragmentManager () {
177
177
var parent: ViewParent = this
178
178
// We traverse view hierarchy up until we find screen parent or a root view
179
- while (! (parent is ReactRootView || parent is Screen || parent is FragmentProviding ) &&
179
+ while (! (parent is ReactRootView || parent is FragmentProviding ) &&
180
180
parent.parent != null
181
181
) {
182
182
parent = parent.parent
@@ -195,7 +195,7 @@ open class ScreenContainer(
195
195
// TODO: We're missing parent-child relationship here between old container & new one
196
196
val fragmentManager =
197
197
checkNotNull(
198
- parent.getFragment (),
198
+ parent.getAssociatedFragment (),
199
199
) { " [RNScreens] Parent $parent returned nullish fragment" }.childFragmentManager
200
200
setFragmentManager(fragmentManager)
201
201
} else {
Original file line number Diff line number Diff line change @@ -7,5 +7,5 @@ import androidx.fragment.app.Fragment
7
7
* can be used to retrieve child fragment manager for nesting operations.
8
8
*/
9
9
interface FragmentProviding {
10
- fun getFragment (): Fragment ?
10
+ fun getAssociatedFragment (): Fragment ?
11
11
}
Original file line number Diff line number Diff line change @@ -23,7 +23,7 @@ object FragmentManagerHelper {
23
23
// If parent adheres to FragmentProviding interface it means we are inside a nested fragment structure.
24
24
// Otherwise we expect to connect directly with root view and get root fragment manager
25
25
if (parent is FragmentProviding ) {
26
- return checkNotNull(parent.getFragment ()) {
26
+ return checkNotNull(parent.getAssociatedFragment ()) {
27
27
" [RNScreens] Parent fragment providing view $parent returned nullish fragment"
28
28
}.childFragmentManager
29
29
} else {
Original file line number Diff line number Diff line change @@ -93,7 +93,7 @@ class TabScreen(
93
93
tabScreenDelegate = WeakReference (delegate)
94
94
}
95
95
96
- override fun getFragment (): Fragment ? = tabScreenDelegate.get()?.getFragmentForTabScreen(this )
96
+ override fun getAssociatedFragment (): Fragment ? = tabScreenDelegate.get()?.getFragmentForTabScreen(this )
97
97
98
98
private fun onTabFocusChangedFromJS () {
99
99
tabScreenDelegate.get()?.onTabFocusChangedFromJS(this , isFocusedTab)
You can’t perform that action at this time.
0 commit comments