package Ġtw . ton yy ang . english words . ui . exam Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . RadioButton Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ import Ġtw . ton yy ang . english words . util . Logger Ċ import Ġtw . ton yy ang . english words . R Ċ import Ġtw . ton yy ang . english words . databinding . Fragment Exam Binding Ċ import Ġtw . ton yy ang . english words . state . Result Ċ Ċ class ĠExam Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġexam ViewModel : ĠExam ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġprivate Ġvar Ġtrue Word : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġans Radio Btn List : ĠList < RadioButton > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( binding . rb An s 1 , Ġbinding . rb An s 2 , Ġbinding . rb An s 3 , Ġbinding . rb An s 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġmenu Visible Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġrandom Item : ĠMenuItem ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Exam Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Exam Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding . btn Answer . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġans Radio Btn List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ans Radio Btn List [ i ]. isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġans Radio Btn List [ i ]. text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Result . text Ġ= Ġif Ġ( result Ġ== Ġtrue Word ) Ġ" çŃĶ å°į äºĨ ï¼ģ \ n çŃĶ æ¡Ī æĺ¯ ï¼ļ $ true Word " Ġelse Ġ" çŃĶ éĮ ¯ äºĨ åĶ · ï¼ģ \ n çŃĶ æ¡Ī æĺ¯ ï¼ļ $ true Word " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġexam ViewModel . exam Data . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . InProgress Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġ" Result . InProgress ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( it . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġit . exception . message , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġexam ViewModel . request Exam () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate UI ( exam Data : ĠExam Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . tv Status . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġtrue Word Ġ= Ġexam Data . true Word ĊĠĠĠĠĠĠĠ Ġbinding . tv Chinese Mean . text Ġ= Ġexam Data . word Mean ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġans Radio Btn List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġans Radio Btn List [ i ]. text Ġ= Ġexam Data . answers [ i ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . tv Status . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġbinding . tv Chinese Mean . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġbinding . rg An s . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . rg An s . getChild At ( i ). isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Answer . isEnabled Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġrandom Item ?. isVisible Ġ= Ġmenu Visible ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Menu Visibility ( menu Visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set Menu Visibility ( menu Visible ) ĊĠĠĠĠĠĠĠ Ġthis . menu Visible Ġ= Ġmenu Visible ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . exam , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġrandom Item Ġ= Ġmenu . find Item ( R . id . action _ random ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== ĠR . id . action _ random ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexam ViewModel . request Exam () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Exam Fragment " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠExam Fragment () ĊĠĠĠ Ġ} Ċ }