package Ġorg . simple . clin ic . util Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . fragment . app . set Fragment Result Listener Ċ import Ġorg . simple . clin ic . navigation . v 2 . Screen Result Ċ Ċ fun ĠFragment . set Fragment Result Listener ( ĊĠĠĠ Ġvar arg Ġrequest Keys : ĠParcel able , ĊĠĠĠ Ġlistener : Ġ( request Key : ĠParcel able , Ġresult : ĠScreen Result ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠ Ġrequest Keys . forEach Ġ{ Ġrequest Key Ġ-> ĊĠĠĠ Ġval Ġrequest KeyName Ġ= Ġrequest Key :: class . java . name ĊĠĠĠ Ġset Fragment Result Listener ( request KeyName , Ġrequest Keys , Ġlistener ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠFragment . set Fragment Result Listener ( ĊĠĠĠ Ġrequest KeyName : ĠString , ĊĠĠĠ Ġrequest Keys : ĠArray < out ĠParcel able >, ĊĠĠĠ Ġlistener : Ġ( request Key : ĠParcel able , Ġresult : ĠScreen Result ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠ Ġset Fragment Result Listener ( request KeyName ) Ġ{ Ġrequest Key , Ġbundle Ġ-> ĊĠĠĠ Ġval Ġkey Ġ= Ġrequest Keys . first OrNull Ġ{ Ġkey Ġ-> Ġkey :: class . java . name Ġ== Ġrequest Key Ġ} ĊĊĠĠĠ Ġif Ġ( key Ġ!= Ġnull ) ĊĠĠĠĠĠ Ġlistener ( key , Ġbundle . get Parcelable ( request Key ) !! ) ĊĠĠĠ Ġelse ĊĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Unknown Ġrequest Ġkey : Ġ$ key , Ġin Ġfragment : Ġ$ tag ") ĊĠ Ġ} Ċ } Ċ Ċ fun ĠFragment Manager . set Fragment Result ( request Key : ĠParcel able , Ġresult : ĠScreen Result ) Ġ{ ĊĠ Ġval Ġrequest KeyName Ġ= Ġrequest Key :: class . java . name ĊĊĠ Ġset Fragment Result ( request KeyName , Ġbundle Of ( ĊĠĠĠĠĠ Ġrequest KeyName Ġto Ġresult ĊĠ Ġ)) Ċ } Ċ