package Ġcom . example . hw 4 _ favorite animal Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ* ĠUse Ġthe Ġ[ Animal s Fragment . newInstance ] Ġfactory Ġmethod Ġto Ċ Ġ* Ġcreate Ġan Ġinstance Ġof Ġthis Ġfragment . Ċ Ġ*/ Ċ class ĠAnimal s Fragment () Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġanimal s ClickListener : ĠImage ClickListener ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclear Button Listener : ĠButton Listener ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġui Model : ĠUI Model ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ animal s , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġui Model Ġ= ĠViewModel Provider ( require Activity ()). get ( UI Model :: class . java ) ĊĠĠĠĠĠĠĠ Ġanimal s ClickListener Ġ= ĠImage ClickListener () ĊĠĠĠĠĠĠĠ Ġclear Button Listener Ġ= ĠButton Listener () ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġupdate Ratings () ĊĠĠĠĠĠĠĠ Ġset OnClick Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset OnClick Listeners (){ ĊĠĠĠĠĠĠĠ Ġview !!. findViewById < Image Button >( R . id . img Btn Be ar ). setOnClickListener ( animal s ClickListener ) ĊĠĠĠĠĠĠĠ Ġview !!. findViewById < Image Button >( R . id . img Btn Cat ). setOnClickListener ( animal s ClickListener ) ĊĠĠĠĠĠĠĠ Ġview !!. findViewById < Image Button >( R . id . img Btn Dog ). setOnClickListener ( animal s ClickListener ) ĊĠĠĠĠĠĠĠ Ġview !!. findViewById < Image Button >( R . id . img Btn Rabbit ). setOnClickListener ( animal s ClickListener ) ĊĠĠĠĠĠĠĠ Ġview !!. findViewById < Button >( R . id . clear Ratings Button ). setOnClickListener ( clear Button Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Ratings (){ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ: ĠSharedPreferences ? Ġ= Ġactivity !!. get Preferences ( Activity . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġif ( prefs Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. findViewById < TextView >( R . id . txt Be ar Rating ). text Ġ= ĠgetString ( R . string . your Rating ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. findViewById < TextView >( R . id . txt Cat Rating ). text Ġ= ĠgetString ( R . string . your Rating ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. findViewById < TextView >( R . id . txt Dog Rating ). text Ġ= ĠgetString ( R . string . your Rating ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. findViewById < TextView >( R . id . txt Rabbit Rating ). text Ġ= ĠgetString ( R . string . your Rating ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( prefs . contains ( R . id . img Btn Be ar . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. findViewById < TextView >( R . id . txt Be ar Rating ). text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ${ getString ( R . string . your Rating )} Ġ${ prefs . get Float ( R . id . img Btn Be ar . toString (), Ġ 0 F )} """ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( prefs . contains ( R . id . img Btn Cat . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. findViewById < TextView >( R . id . txt Cat Rating ). text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ${ getString ( R . string . your Rating )} Ġ${ prefs . get Float ( R . id . img Btn Cat . toString (), Ġ 0 F )} """ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( prefs . contains ( R . id . img Btn Dog . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. findViewById < TextView >( R . id . txt Dog Rating ). text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ${ getString ( R . string . your Rating )} Ġ${ prefs . get Float ( R . id . img Btn Dog . toString (), Ġ 0 F )} """ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( prefs . contains ( R . id . img Btn Rabbit . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. findViewById < TextView >( R . id . txt Rabbit Rating ). text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ${ getString ( R . string . your Rating )} Ġ${ prefs . get Float ( R . id . img Btn Rabbit . toString (), Ġ 0 F )} """ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠImage ClickListener : ĠView . OnClickListener { ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Model . current Animal ID Ġ= Ġv !!. id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( v Ġ!= Ġnull ) Ġ{( activity Ġas ĠMainActivity ). rate Animal ()} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠButton Listener Ġ: ĠView . OnClickListener { ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Model . current Animal ID Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( v Ġ!= Ġnull ){ ( activity Ġas ĠMainActivity ). clear Ratings ()} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }