package Ġcom . p aw kr zy sci ak . clean architecture example . core . navigation Ċ Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . navigation . Nav Options Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . nav Options Ċ import Ġcom . p aw kr zy sci ak . clean architecture example . core . provider . Activity Provider Ċ Ċ class ĠFragment Navigator Impl ( ĊĠĠĠ Ġprivate Ġval Ġactivity Provider : ĠActivity Provider , ĊĠĠĠ Ġ@ Id Res Ġprivate Ġval Ġnav Host Fragment Res : ĠInt , ĊĠĠĠ Ġ@ Id Res Ġprivate Ġval Ġhome Destination Res : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġdefault Nav Options : ĠNav Options Ċ ) Ġ: ĠFragment Navigator Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġget Support FragmentManager () Ġ= ĊĠĠĠĠĠĠĠ Ġ( activity Provider . foreground Activity Ġas ? ĠFragment Activity )?. support FragmentManager ĊĊĠĠĠ Ġprivate Ġfun Ġget Nav Controller () Ġ= Ġget Support FragmentManager () ĊĠĠĠĠĠĠĠ Ġ? . find Fragment ById ( nav Host Fragment Res ) ĊĠĠĠĠĠĠĠ Ġ? . find Nav Controller () ĊĊĠĠĠ Ġoverride Ġfun Ġnavigate To ( destination Id : ĠInt , Ġfragment Transition : ĠFragment Transition ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigate To < Unit >( destination Id , Ġnull , Ġfragment Transition ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġnavigate To ( ĊĠĠĠĠĠĠĠ Ġdestination Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġparam : ĠPair < String , ĠT > ?, ĊĠĠĠĠĠĠĠ Ġfragment Transition : ĠFragment Transition ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= Ġparam ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle Of ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnav Options Ġ= Ġfragment Transition ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim Ġ{ Ġenter Ġ= Ġit . enter Anim Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim Ġ{ Ġexit Ġ= Ġit . exit Anim Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim Ġ{ Ġpop Enter Ġ= Ġit . pop Enter Anim Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim Ġ{ Ġpop Exit Ġ= Ġit . pop Exit Anim Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġdefault Nav Options ĊĠĠĠĠĠĠĠ Ġget Nav Controller ()?. navigate ( destination Id , Ġbundle , Ġnav Options ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgo Back ( destination Id : ĠInt ?, Ġinclusive : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( destination Id Ġ== Ġnull ) Ġget Nav Controller ()?. pop Back Stack () ĊĠĠĠĠĠĠĠ Ġelse Ġget Nav Controller ()?. pop Back Stack ( destination Id , Ġinclusive ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear History () Ġ{ ĊĠĠĠĠĠĠĠ Ġgo Back ( home Destination Res ) ĊĠĠĠ Ġ} Ċ Ċ }