@@ -53,38 +53,37 @@ actual abstract class NavigationScreen<S> actual constructor(
5353 }
5454 childFragmentManager.registerFragmentLifecycleCallbacks(
5555 object : FragmentManager .FragmentLifecycleCallbacks () {
56- private val detachHandlers = mutableMapOf<Fragment , Runnable >()
57-
5856 override fun onFragmentStarted (fm : FragmentManager , f : Fragment ) {
5957 super .onFragmentStarted(fm, f)
6058
6159 updateNavigation(f)
6260 }
6361
64- override fun onFragmentAttached (fm : FragmentManager , f : Fragment , context : Context ) {
65- super .onFragmentAttached(fm, f, context)
62+ override fun onFragmentAttached (
63+ fm : FragmentManager ,
64+ f : Fragment ,
65+ context : Context
66+ ) = Unit
6667
67- if (f is Resultable < * > && f is Screen < * > ) {
68- val resultTarget = f.screenId
68+ override fun onFragmentDetached ( fm : FragmentManager , f : Fragment ) {
69+ super .onFragmentDetached(fm, f)
6970
70- if (resultTarget != null ) {
71- val target = fm.getAllScreens()
72- .firstOrNull { it.resultCode == resultTarget }
71+ if (f is Resultable < * > && f is Screen < * > ) {
72+ val resultTarget : Int = f.screenId
73+ ? : return
7374
74- detachHandlers[f] = Runnable {
75- val code = f.requestCode
76- val result = f.screenResult
75+ val target: Screen <* >? = fm.getAllScreens()
76+ .firstOrNull { it.resultCode == resultTarget }
7777
78- target!! .routeHandlers[code]!! .invoke(result)
79- }
80- }
81- }
82- }
78+ requireNotNull(target) { " can't route with result because target not found" }
8379
84- override fun onFragmentDetached ( fm : FragmentManager , f : Fragment ) {
85- super .onFragmentDetached(fm, f)
80+ val code : Int? = f.requestCode
81+ val result : android.os. Parcelable ? = f.screenResult
8682
87- detachHandlers.remove(f)?.run ()
83+ val handler = target.routeHandlers[code]
84+ requireNotNull(handler) { " can't call result because handler is null" }
85+ handler.invoke(result)
86+ }
8887 }
8988 },
9089 false
@@ -192,13 +191,15 @@ actual abstract class NavigationScreen<S> actual constructor(
192191 NavigationBar .None -> {
193192 toolbar.visibility = View .GONE
194193 }
194+
195195 is NavigationBar .Normal -> {
196196 navBar.apply (
197197 toolbar = toolbar,
198198 context = context,
199199 fragmentManager = childFragmentManager
200200 )
201201 }
202+
202203 is NavigationBar .Search -> {
203204 navBar.apply (
204205 toolbar = toolbar,
0 commit comments