package Ġedu . pokemon . i ut . tut ti dex . ui . pokemon detail Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . transition . Transition Inflater Ċ import Ġedu . pokemon . i ut . tut ti dex . R Ċ import Ġedu . pokemon . i ut . tut ti dex . common . image . load Image With Out Transition Ċ import Ġedu . pokemon . i ut . tut ti dex . databinding . Fragment Pokemon Detail Binding Ċ import Ġorg . k oin . android x . view model . ext . android . get ViewModel Ċ import Ġorg . k oin . core . parameter . parameters Of ĊĊĊĊ Ċ class ĠPokemon Detail Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠPokemon Detail ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Pokemon Detail Binding ĊĊĠĠĠ Ġ/* override Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġpost p one Enter Transition () ĊĠĠĠĠĠĠĠ Ġ// The Ġshared Element Ġbetween Ġscreens Ġis Ġonly Ġavailable Ġfor Ġversion Ġabove Ġof ĠL OL LI POP ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared Element Enter Transition Ġ= ĠTransition Inflater . from ( context ). inflate Transition ( android . R . transition . move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . fragment _ pokemon _ detail , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġpokemon Id Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġ// TODO Ġ 4 ) ĠRec uper er Ġl ' id Ġdu Ġpokemon Ġcont enu Ġdans Ġles Ġ" arguments " Ġdu Ġfragment , Ġen regist rer Ġle Ġdans Ġla Ġvariable Ġpokemon Id ĊĠĠĠĠĠĠĠ Ġ// ĠL ancer Ġl ' application Ġet Ġv Ã©r ifier Ġque Ġvous Ġnavig uer ĊĠĠĠĠĠĠĠ Ġif Ġ( arguments Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpoke Id Ġ= ĠPokemon Detail Fragment Args . from Bundle ( arguments !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpokemon Id Ġ= Ġpoke Id . pokemon Id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ViewModel Ġ{ Ġparameters Of ( pokemon Id ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . pokemon Detail ViewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ ĠviewModel . image . observe ( this , ĠObserver Ġ{ Ġimage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġ 1 6 ) ĠL ors que Ġl ' url Ġde Ġl ' image Ġdu Ġpokemon Ġest Ġdispon ible Ġla Ġdon nÃ© e Ġser a Ġm ise ĠÃł Ġdis position Ġ ici ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUtil iser Ġla Ġpour Ġch arger Ġl ' image Ġdans Ġl ' ImageView Ġdu Ġlayout Ġ( util iser Ġload Image With Out Transition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Image With Out Transition ( binding . image Po ke , viewModel . image . value ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . types . observe ( this , ĠObserver Ġ{ Ġtypes Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġ 1 7 ) ĠPl ut Ã´ t Ġque Ġde Ġn ' aff icher Ġqu ' un Ġse ul Ġtype Ġess ayer Ġde Ġtro u ver Ġune Ġsolution Ġpour Ġtous Ġles Ġaff icher Ġcf ĠTODO Ġ 1 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Types ( types ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Inf late Params ") ĊĠĠĠ Ġprivate Ġfun Ġload Types ( types : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO Ġ 1 8 ) Ġcod er Ġ ici Ġle Ġtodo Ġ 1 7 , Ġpet it Ġind ice Ġun ĠLinearLayout Ġpeut Ġvous Ġa ider ĊĠĠĠĠĠĠĠ Ġtypes . forEach { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Type Ġ= ĠTextView ( Context Theme Wrapper ( context , ĠR . style . Pokemon Detail TypeList )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Type . text Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . type List . addView ( new Type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . pokemon _ detail _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull Ġ&& Ġnull Ġ== Ġget Shared Intent (). resolve Activity ( activity . package Manager )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . share )?. isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . share Ġ-> Ġshare Success () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshare Success () Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( get Shared Intent ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Shared Intent (): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshare Intent Ġ= ĠIntent ( Intent . ACTION _ SEND ) ĊĠĠĠĠĠĠĠ Ġshare Intent . setType (" text / plain ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. putExtra ( Intent . EXTRA _ TEXT , ĠgetString ( R . string . number , ĠviewModel . number . value )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġshare Intent ĊĠĠĠ Ġ} Ċ }