package Ġcom . y ureka . technology . y tc . ui . ber anda . mat eri . practice 4 . fragment Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . speech . tts . Text ToS peech Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . core . text . bold Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġcom . y ureka . technology . y tc . R Ċ import Ġcom . y ureka . technology . y tc . databinding . Bs Result Wrong Binding Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Fragment Ċ import Ġjava . util .* Ċ import Ġkotlin . random . Random ĊĊ Ċ class ĠBottom Sheet Wrong Fragment Ġ: ĠBottom Sheet Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġresult : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġcorrect Answer : ĠString ? Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġvar Ġcustom Answer : ĠSp ann able StringBuilder ? Ġ= Ġnull ĊĊĠĠĠ Ġlateinit Ġvar Ġm TT S : ĠText ToS peech ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Bottom Sheet Wrong Fragment " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠRESULT Ġ= Ġ" RESULT " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCOR RECT _ AN SW ER Ġ= Ġ" CORRECT _ AN SW ER " ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Instance ( result : ĠString , Ġcorrect Answer : ĠString ): ĠBottom Sheet Wrong Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString ( RESULT , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString ( CORRECT _ AN SW ER , Ġcorrect Answer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠBottom Sheet Wrong Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠB s Result Wrong Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Binding Util . inflate ( in flater , ĠR . layout . bs _ result _ wrong , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġword Ġ= ĠgetRandom Quote () ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġit . getString ( RESULT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcorrect Answer Ġ= Ġit . getString ( CORRECT _ AN SW ER ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcustom Answer Ġ= ĠSp ann able StringBuilder () ĊĠĠĠĠĠĠĠ Ġinit TT S () ĊĠĠĠĠĠĠĠ Ġcheck Answer () ĊĠĠĠĠĠĠĠ Ġbinding . tv Sorry . text Ġ= Ġword ĊĠĠĠĠĠĠĠ Ġbinding . tv Answer . text Ġ= Ġcustom Answer ĊĠĠĠĠĠĠĠ Ġbinding . btn Audio . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm TT S . speak ( correct Answer , ĠText ToS peech . QUEUE _ FLUSH , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetRandom Quote (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquotes Ġ= ĠarrayOf (" Y ah Ġsal ah "," K ur ang Ġt ep at Ġn ih "," Bel um Ġben ar ") ĊĠĠĠĠĠĠĠ Ġval Ġrandom Value Ġ= ĠRandom . nextInt ( quotes . size ) ĊĠĠĠĠĠĠĠ Ġreturn Ġquotes [ random Value ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Style ( Bottom Sheet Dialog Fragment . STYLE _ NORMAL , ĠR . style . Custom Bottom Sheet Dialog Theme ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Dialog Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate Dialog ( savedInstanceState ) Ġas ĠBottom Sheet Dialog ĊĠĠĠĠĠĠĠ Ġbottom Sheet Dialog . setOn Show Listener Ġ{ Ġdialog Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġdialog Ġas ĠBottom Sheet Dialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Ġ= Ġd . findViewById < View >( R . id . design _ bottom _ sheet ) Ġas ĠFrame Layout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Behavior Ġ= ĠBottom Sheet Behavior . from ( bottom Sheet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbottom Sheet Dialog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit TT S () Ġ{ ĊĠĠĠĠĠĠĠ Ġm TT S Ġ= ĠText ToS peech ( context , ĠText ToS peech . OnInit Listener Ġ{ Ġstatus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Ġ!= ĠText ToS peech . ERROR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġthere Ġis Ġno Ġerror Ġthen Ġset Ġlanguage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm TT S . language Ġ= ĠLocale . US ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Answer () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsplit Answer Ġ= Ġresult ?. split (" Ġ") ĊĠĠĠĠĠĠĠ Ġval Ġsplit Correct Answer Ġ= Ġcorrect Answer ?. split (" Ġ") ĊĊĠĠĠĠĠĠĠ Ġsplit Correct Answer ?. forEach Indexed Ġ{ Ġindex , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ<= Ġsplit Answer ?. last Index !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . equals ( split Answer [ index ], Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Answer ?. append ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Answer ?. bold Ġ{ Ġappend ( item ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Answer ?. bold Ġ{ Ġappend ( item ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġsplit Correct Answer . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Answer ?. append (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }