package Ġnet . raf ael to led o . code Ċ Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . core . util . Preconditions Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . core . app . launch Activity Ċ import Ġjava . util . concurrent . Count DownLatch Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjava . util . concurrent . TimeoutException Ċ Ċ fun Ġ< T > ĠLive Data < T >. get Or Await Value ( ĊĠĠĠ Ġtime : ĠLong Ġ= Ġ 2 , ĊĠĠĠ Ġtime Unit : ĠTimeUnit Ġ= ĠTimeUnit . SECONDS , ĊĠĠĠ Ġafter Ob serve : Ġ() Ġ-> ĠUnit Ġ= Ġ{} Ċ ): ĠT Ġ{ ĊĠĠĠ Ġvar Ġdata : ĠT ? Ġ= Ġnull ĊĠĠĠ Ġval Ġl atch Ġ= ĠCount DownLatch ( 1 ) ĊĠĠĠ Ġval Ġobserver Ġ= Ġobject Ġ: ĠObserver < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChanged ( o : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . count Down () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ get Or Await Value . remove Observer ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġthis . observe Fore ver ( observer ) ĊĊĠĠĠ Ġafter Ob serve . invoke () ĊĊĠĠĠ Ġ// ĠDon 't Ġwait Ġin def initely Ġif Ġthe ĠLive Data Ġis Ġnot Ġset . ĊĠĠĠ Ġif Ġ(! latch . await ( time , Ġtime Unit )) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . remove Observer ( observer ) ĊĠĠĠĠĠĠĠ Ġthrow ĠTimeout Exception (" LiveData Ġvalue Ġwas Ġnever Ġset .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġreturn Ġdata Ġas ĠT Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠFragment > Ġlaunch Fragment In H ilt Container ( ĊĠĠĠ Ġfragment Args : ĠBundle ? Ġ= Ġnull , ĊĠĠĠ Ġcross inline Ġaction : ĠFragment . () Ġ-> ĠUnit Ġ= Ġ{} Ċ ) Ġ{ ĊĠĠĠ Ġval ĠstartActivity Intent Ġ= ĠIntent . make MainActivity ( ĊĠĠĠĠĠĠĠ ĠComponent Name ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Provider . getApplicationContext (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ilt Test Activity :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġlaunch Activity < H ilt Test Activity >( startActivity Intent ). on Activity Ġ{ Ġactivity Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġfragment : ĠFragment Ġ= Ġactivity . support FragmentManager . fragment Factory . instantiate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreconditions . checkNotNull ( T :: class . java . class Loader ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT :: class . java . name ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġfragment Args ĊĠĠĠĠĠĠĠ Ġactivity . support FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( android . R . id . content , Ġfragment , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Now () ĊĊĠĠĠĠĠĠĠ Ġfragment . action () ĊĠĠĠ Ġ} Ċ }