package Ġcom . world tur tle media . wh ales ay . core . k tx Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . MainThread Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . Nav Args Ċ import Ġandroidx . navigation . Nav Args Lazy Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . Nav Directions Ċ import Ġandroidx . navigation . Nav Options Ċ import Ġandroidx . navigation . Navigator Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . fragment . Fragment Navigator Extras Ċ import Ġcom . world tur tle media . wh ales ay . core . k tx . util . Navigate Options Ċ Ċ @ MainThread Ċ inline Ġfun Ġ< re ified ĠArgs Ġ: ĠNav Args > ĠFragment . nav Args () Ġ= ĠNav Args Lazy ( Args :: class ) Ġ{ ĊĠĠĠ Ġarguments ĊĠĠĠĠĠĠĠ Ġ?: Ġactivity ?. intent ?. extras ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" Fragment Ġ$ this Ġhas Ġnull Ġarguments ") Ċ } Ċ Ċ /** Ċ Ġ* ĠQuick Ġextension Ġto Ġgrab Ġa Ġnullable Ġ[ Nav Controller ] Ċ Ġ* Ġ``` Ċ Ġ* Ġfind Nav Controller ()?. navigate ( R . id . step 2 ) Ġ?: Ġthrow ĠIllegalStateException (" No Ġview Ġfound !") Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun ĠFragment . find Nav Controller (): ĠNav Controller ? Ġ= Ġview ?. find Nav Controller () Ċ Ċ /** Ċ Ġ* ĠNavig ates Ġview Ġa Ġ[ Nav Directions ] Ġclass Ċ Ġ* Ġ``` Ċ Ġ* Ġnavigate To Ġ{ ĠMain Fragment Directions . show Setup Screen () Ġ} Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ fun ĠFragment . navigate To ( block : Ġ() Ġ-> ĠNav Directions ) Ġ{ ĊĠĠĠ Ġblock . invoke (). let Ġ{ Ġfind Nav Controller ()?. navigate ( it ) Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠNavig ates Ġwith Ġa Ġpre - built Ġ[ Navigate Options ] Ċ Ġ* Ġ``` Ċ Ġ* Ġval Ġanim Ġ= ĠNav Options . Builder (). set Enter Anim ( R . anim . nav _ default _ enter _ anim ). build () Ċ Ġ* Ġval Ġoptions Ġ= ĠNavigate Options ( null , Ġanim , Ġnull ) Ċ Ġ* Ċ Ġ* Ġnavigate With ( nav Options Ġ= Ġoptions ) Ġ{ ĠMain Fragment Directions . show Setup Screen () Ġ} Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ inline Ġfun ĠFragment . navigate With ( ĊĠĠĠ Ġnav Options : ĠNavigate Options Ġ= ĠNavigate Options (), ĊĠĠĠ Ġblock : ĠNavigate Options . () Ġ-> ĠNav Directions Ċ ) Ġ{ ĊĠĠĠ Ġblock . invoke ( nav Options ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( args , Ġopts , Ġextras ) Ġ= Ġnav Options ĊĠĠĠĠĠĠĠ Ġfind Nav Controller ()?. navigate ( action Id , Ġargs Ġ?: Ġarguments , Ġopts , Ġextras ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAllows Ġyou Ġto Ġindividually Ġset Ġthe Ġ[ Navigate Options ], Ġsee Ġ[ Fragment . navigate With ] Ċ Ġ* Ġ``` Ċ Ġ* Ġval Ġanim Ġ= ĠNav Options . Builder (). set Enter Anim ( R . anim . nav _ default _ enter _ anim ). build () Ċ Ġ* Ġnavigate With ( nav Options Ġ= Ġanim ) Ġ{ ĠMain Fragment Directions . show Setup Screen () Ġ} Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ inline Ġfun ĠFragment . navigate With ( ĊĠĠĠ Ġargs : ĠBundle ? Ġ= Ġnull , ĊĠĠĠ Ġnav Options : ĠNav Options ? Ġ= Ġnull , ĊĠĠĠ Ġextras : ĠNavigator . Extras ? Ġ= Ġnull , ĊĠĠĠ Ġblock : ĠNavigate Options . () Ġ-> ĠNav Directions Ċ ) Ġ{ ĊĠĠĠ Ġnavigate With ( Navigate Options ( args , Ġnav Options , Ġextras ), Ġblock ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAllows Ġyou Ġto Ġindividually Ġset Ġthe Ġ[ Navigate Options ], Ġand Ġmore Ġeasily Ġset Ġthe Ċ Ġ* Ġshared Ġelement Ġtransitions . Ġ ĠSee Ġ[ Fragment Navigator Extras ] Ġand Ġ[ View . get Transition Name ] Ċ Ġ* Ġ``` Ċ Ġ* Ġval Ġtarget Button Ġ= ĠfindViewById < AppCompat Button >( R . id . button ) Ċ Ġ* Ġnavigate With ( shared Elements Ġ= Ġtarget Button Ġto Ġtarget Button . transition Name ) Ġ{ Ċ Ġ* ĠĠĠĠ ĠMain Fragment Directions . show Setup Screen () Ċ Ġ* Ġ} Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ inline Ġfun ĠFragment . navigate With ( ĊĠĠĠ Ġargs : ĠBundle ? Ġ= Ġnull , ĊĠĠĠ Ġnav Options : ĠNav Options ? Ġ= Ġnull , ĊĠĠĠ Ġvar arg Ġshared Elements : ĠPair < View , ĠString >? Ġ= Ġkotlin . empty Array (), ĊĠĠĠ Ġblock : ĠNavigate Options . () Ġ-> ĠNav Directions Ċ ) Ġ{ ĊĠĠĠ Ġval Ġelements Ġ= Ġshared Elements . filter NotNull (). to Typed Array () ĊĠĠĠ Ġnavigate With ( args , Ġnav Options , ĠFragment Navigator Extras (* elements ), Ġblock ) Ċ } Ċ Ċ /** Ċ Ġ* ĠHelper Ġextension Ġfor Ġ[ Fragment . navigate With ] Ġfor Ġwhen Ġyou Ġneed Ġto Ġnavigate Ċ Ġ* Ġwith Ġshared Ġelement Ġtransitions . Ġ ĠIs Ġa Ġvar arg , Ġso Ġyou Ġcan Ġpass Ġin Ġmultiple Ċ Ġ* Ġshared Ġelements . Ċ Ġ* Ġ``` Ċ Ġ* Ġval Ġtarget Ġ= ĠfindViewById < AppCompat Button >( R . id . button ) Ċ Ġ* Ġnavigate To ( target Ġto Ġtarget . transition Name ) Ġ{ ĠMain Fragment Directions . show Setup Screen () Ġ} Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ inline Ġfun ĠFragment . navigate To ( ĊĠĠĠ Ġvar arg Ġshared Elements : ĠPair < View , ĠString >? Ġ= Ġkotlin . empty Array (), ĊĠĠĠ Ġblock : Ġ() Ġ-> ĠNav Directions Ċ ) Ġ{ ĊĠĠĠ Ġnavigate With ( shared Elements Ġ= Ġ* shared Elements , Ġblock Ġ= Ġ{ Ġblock . invoke () Ġ}) Ċ } Ċ