package Ġcom . y ureka . technology . y tc . ui . ber anda . mat eri . practice 1 Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . speech . tts . Text ToS peech Ċ import Ġandroid . view . View Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġcom . y ureka . technology . y tc . R Ċ import Ġcom . y ureka . technology . y tc . databinding . Fragment Pract ice 1 Binding Ċ import Ġcom . y ureka . technology . y tc . ui . ber anda . mat eri . practice 1 . fragment . Bottom Sheet Correct Fragment Ċ import Ġcom . y ureka . technology . y tc . ui . ber anda . mat eri . practice 1 . fragment . Bottom Sheet Wrong Fragment Ċ import Ġcom . y ureka . technology . y tc . ui . ber anda . mat eri . practice 1 . model . So al Pract ice 1 Model Ċ import Ġcom . y ureka . technology . y tc . util . base . Base Fragment Ċ Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util . Locale ĊĊ Ċ @ Android EntryPoint Ċ class ĠPract ice 1 Fragment Ġ: ĠBase Fragment < Fragment Pract ice 1 Binding >() Ġ{ Ċ Ċ // ĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Pract ice 1 Binding ĊĠĠĠ Ġval ĠviewModel : ĠPract ice 1 ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġlateinit Ġvar Ġm TT S : ĠText ToS peech ĊĊĠĠĠ Ġprivate Ġvar Ġso al _ id Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġselected _ answer Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġfun Ġget Layout Resource (): ĠInt Ġ= ĠR . layout . fragment _ practice 1 ĊĊĠĠĠ Ġoverride Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . toolbar . setup With Nav Controller ( find Nav Controller ()) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġbutton Handler () ĊĠĠĠĠĠĠĠ Ġinit TT S () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Observer s () Ġ{ ĊĠĠĠĠĠĠĠ Ġobserve So al () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve So al () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . so al . observe ( this , ĠObserver Ġ{ Ġso als Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit So al ( so als ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton J aw aban ( so als [ so al _ id ]) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbutton J aw aban ( so al : ĠSo al Pract ice 1 Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . btn C ek . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Answer ( so al . answer )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Correct Fragment . create Instance ( so al . so al , Ġso al . icon [ selected _ answer ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet . show ( parent FragmentManager , ĠBottom Sheet Correct Fragment . TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Sheet Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Sheet Wrong Fragment . create Instance ( so al . so al , Ġso al . icon [ selected _ answer ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet . show ( parent FragmentManager , ĠBottom Sheet Wrong Fragment . TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit So al ( so als : ĠList < So al Pract ice 1 Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . tv Question . text Ġ= Ġ" Man ak ah Ġyang Ġmer up akan Ġ${ so als [ so al _ id ]. so al } ?" ĊĠĠĠĠĠĠĠ Ġbinding . img Answer 1 . setImage Resource ( so als [ so al _ id ]. icon [ 0 ]) ĊĠĠĠĠĠĠĠ Ġbinding . img Answer 2 . setImage Resource ( so als [ so al _ id ]. icon [ 1 ]) ĊĠĠĠĠĠĠĠ Ġbinding . tv Label Answer 1 . text Ġ= Ġso als [ so al _ id ]. translate [ 0 ] ĊĠĠĠĠĠĠĠ Ġbinding . tv Label Answer 2 . text Ġ= Ġso als [ so al _ id ]. translate [ 1 ] ĊĠĠĠĠĠĠĠ Ġbutton Audio ( so als [ so al _ id ]. options ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 Ġbutton Audio ( answer : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . audio Answer 1 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( answer [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto S peak Ġ= Ġanswer [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm TT S . speak ( to S peak , ĠText ToS peech . QUEUE _ FLUSH , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . audio Answer 2 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( answer [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto S peak Ġ= Ġanswer [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm TT S . speak ( to S peak , ĠText ToS peech . QUEUE _ FLUSH , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbutton Handler () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . rg Answer . setOn Checked ChangeListener Ġ{ Ġradio Group , Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn C ek . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Answer ( answer : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrb Answer 1 Ġ= Ġbinding . rb Answer 1 ĊĠĠĠĠĠĠĠ Ġval Ġrb Answer 2 Ġ= Ġbinding . rb Answer 2 ĊĠĠĠĠĠĠĠ Ġselected _ answer Ġ= Ġif Ġ( rb Answer 1 . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . rg Answer . indexOf Child ( rb Answer 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . rg Answer . indexOf Child ( rb Answer 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTim ber . d (" J aw ab ann ya Ġ: Ġ$ selected _ answer ") ĊĠĠĠĠĠĠĠ Ġreturn Ġselected _ answer Ġ== Ġanswer ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ//// ĊĊĠĠĠ Ġ/* override Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . fragment _ practice 1 ) ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĊĠĠĠĠĠĠĠ Ġ* // *( this Ġas ĠAppCompatActivity ?) !!. set Support ActionBar ( binding . toolbar ) ĊĠĠĠĠĠĠĠ Ġ( this Ġas ĠAppCompatActivity ?) !!. support ActionBar ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġ} * //* ĊĊĠĠĠĠĠĠĠ Ġbutton Handler () ĊĠĠĠĠĠĠĠ Ġinit TT S () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġobserve So al () ĊĠĠĠ Ġ}*/ ĊĊ Ċ }