package Ġcom . example . cs 4 5 1 8 _ project Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġjava . util .* Ċ Ċ private Ġconst Ġval ĠREQUEST _ CODE Ġ= Ġ 1 Ċ Ċ class ĠDetail Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġteam B Score : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġteam AS core : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġteam AT ext : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġteam B Text : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġreset But t : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhistory But t : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsave But t : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhistory : ĠHistory ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġteam AP h oto : ĠImageView ĊĊĠĠĠ Ġprivate Ġvar Ġhistory Repository : ĠHistory Repository Ġ= ĠHistory Repository . get () ĊĊĠĠĠ Ġinterface ĠCallback s Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonClick New Game From Detail () ĊĠĠĠĠĠĠĠ Ġfun ĠonClick History From Detail () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġcallbacks : ĠCallback s ? Ġ= Ġnull ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġcallbacks Ġ= Ġcontext Ġas ĠCallback s ? ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ Ġcallbacks Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġhistory Detail ViewModel : ĠHistory Detail ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( require Activity ()). get ( History Detail ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" re ached ", Ġ" re ached ") ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġhistory Ġ= ĠHistory () ĊĠĠĠĠĠĠĠ Ġval Ġhistory Id Ġ= Ġarguments ?. get Serializable (" history _ id ") Ġas ĠUUID ĊĠĠĠĠĠĠĠ Ġhistory Detail ViewModel . load History ( history Id ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer ?. removeAll Views () ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ detail , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġfind Views ( view ) ĊĊĊĠĠĠĠĠĠĠ Ġset OnClick Listeners ( view ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġhistory Detail ViewModel . history LiveData . observe ( view Lifecycle Owner , Ġ{ Ġhistory Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhistory . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . history Ġ= Ġhistory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġupdate UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġteam AT ext . text Ġ= Ġhistory . team A Name ĊĠĠĠĠĠĠĠ Ġteam B Text . text Ġ= Ġhistory . team B Name ĊĠĠĠĠĠĠĠ Ġteam AS core . text Ġ= Ġhistory . team AS core . toString () ĊĠĠĠĠĠĠĠ Ġteam B Score . text Ġ= Ġhistory . team B Score . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset OnClick Listeners ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreset But t . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( this :: class . java . toString (), Ġ" new Game But t ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. onClick New Game From Detail () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhistory But t . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( this :: class . java . toString (), Ġ" history But t ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks ?. onClick History From Detail () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsave But t . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Repository . update History ( history ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Detail ViewModel . load History ( history . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ CODE Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtaken Image Ġ= Ġdata ?. extras ?. get (" data ") Ġas ĠBitmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġteam AP h oto . setImage Bitmap ( taken Image ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Views ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġteam AS core Ġ= Ġview . findViewById ( R . id . team AS core ) ĊĠĠĠĠĠĠĠ Ġteam B Score Ġ= Ġview . findViewById ( R . id . team B Score ) ĊĠĠĠĠĠĠĠ Ġteam AT ext Ġ= Ġview . findViewById ( R . id . team AT ext ) ĊĠĠĠĠĠĠĠ Ġteam B Text Ġ= Ġview . findViewById ( R . id . team B Text ) ĊĠĠĠĠĠĠĠ Ġhistory But t Ġ= Ġview . findViewById ( R . id . history But t _ detail ) ĊĠĠĠĠĠĠĠ Ġsave But t Ġ= Ġview . findViewById ( R . id . save But t _ detail ) ĊĠĠĠĠĠĠĠ Ġreset But t Ġ= Ġview . findViewById ( R . id . reset But t _ detail ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( history Id : ĠUUID ): ĠDetail Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Serializable (" history _ id ", Ġhistory Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDetail Fragment (). apply Ġ{ Ġarguments Ġ= Ġargs Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġhistory Detail ViewModel . save History ( history ) ĊĠĠĠ Ġ} Ċ } Ċ