package Ġcom . example . d umb _ char ades . screens . score Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ Ċ import Ġcom . example . d umb _ char ades . R Ċ import Ġcom . example . d umb _ char ades . Score ViewModel Factory Ċ import Ġcom . example . d umb _ char ades . databinding . Score Fragment Binding Ċ Ċ class ĠScore Fragment () Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠScore Fragment () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠScore ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel Factory : ĠScore ViewModel Factory ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġview Ġand Ġobtain Ġan Ġinstance Ġof Ġthe Ġbinding Ġclass . ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠScore Fragment Binding Ġ= ĠData Binding Util . inflate ( in flater , ĠR . layout . score _ fragment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer , Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠviewModel Factory Ġ= Ġ ĠScore ViewModel Factory ( Score Fragment Args . from Bundle ( arguments !! ). score ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , ĠviewModel Factory ). get ( Score ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġbinding . score ViewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġobserver Ġfor Ġscore Ċ // ĠĠĠĠĠĠĠ ĠviewModel . score . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġnew Score Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . score Text . text Ġ= Ġnew Score . toString () Ċ // ĠĠĠĠĠĠĠ Ġ}) Ċ // ĠĠĠĠĠĠĠ Ġbinding . score Text . text Ġ= ĠviewModel . score . toString () ĊĊĠĠĠĠĠĠĠ Ġ// ĠNavig ates Ġback Ġto Ġgame Ġwhen Ġbutton Ġis Ġpressed ĊĠĠĠĠĠĠĠ ĠviewModel . event Play Again . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġplay Again Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( play Again ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( Score Fragment Directions . action Restart ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Play Again Complete () ĊĠĠĠĠĠĠĠ Ġ}) Ċ // ĠĠĠĠĠĠĠ Ġbinding . play Again Button . setOnClickListener { Ġ ĠviewModel . on Play Again () Ġ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . share Score Button . setOnClickListener ( View . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs cored Value Ġ= Ġ" I Ġhave ĠS cored Ġ${ viewModel . score . value } Ġin ĠD umb - Char ades ĠGame " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsharing Intent Ġ= ĠIntent ( Intent . ACTION _ SEND ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsharing Intent . type Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsharing Intent . putExtra ( Intent . EXTRA _ TEXT , Ġs cored Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( Optional ) ĠIf Ġyou Ġwant Ġa Ġpreview Ġtitle , Ġset Ġit Ġwith ĠIntent . EXTRA _ TITLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsharing Intent . putExtra ( Intent . EXTRA _ TITLE , ĠgetString ( R . string . send _ intent _ title )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent . create Chooser ( sharing Intent , null )) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} Ċ } Ċ