package Ġcom . talk ing kotlin . activity Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġcom . talk ing kotlin . R Ċ import Ġcom . talk ing kotlin . fragment . Episode s Fragment Ċ import Ġcom . talk ing kotlin . presenter . Main Presenter ĊĊ Ċ /** Ċ Ġ* ĠMainActivity Ġis Ġthe ĠEntry ĠPoint Ġof Ġthe Ġapplication . Ċ Ġ* ĠIt Ġshow Ġthe Ġlists Ġof Ġepisode s Ġof Ġthe Ġpod cast , Ġthrough Ġa Ġpresenter Ġand Ġa Ġfragment . Ċ Ġ* Ġ@ author ĠAlex ander ĠG h ers ch on Ċ Ġ*/ Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFR AG MENT _ TAG Ġ= Ġ" FRAGMENT _ TAG " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġlazy Ġloading Ġof Ġthe Ġpresenter ĊĠĠĠ Ġprivate Ġval Ġpresenter : ĠMain Presenter Ġby Ġlazy Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠInstanti ation Ġof Ġthe ĠMain Presenter , Ġwith Ġits Ġcallback Ġimplemented Ġas Ġan Ġanonymous Ġinner Ġclass ĊĠĠĠĠĠĠĠ ĠMain Presenter ( this , Ġobject Ġ: ĠMain Presenter . Main Presenter Callback Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshow Episode s () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEp isode Ġdeep Ġlinking , Ġurl Ġexample : Ġ" http :// talk ing kotlin . com / Sit ting - down - with - Tor - Nor bye /" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġepisode Title : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent ?. action Ġ== ĠIntent . ACTION _ VIEW Ġ&& Ġintent ?. data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġextract Ġthe Ġepisode Ġname Ġfrom Ġthe Ġurl Ġ( and Ġremoves Ġthe Ġdas hes ) Ġto Ġsend Ġit Ġto Ġthe Ġfragment Ġshowing Ġepisode s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Title Ġ= Ġintent ?. data ?. last Path Segment ?. replace ("- ", Ġ" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshows Ġthe Ġfragment Ġ( that Ġshows Ġepisode s Ġto Ġthe Ġactivity ) Ġif Ġnot Ġshowed Ġalready ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfragment Ġ= Ġsupport FragmentManager . find Fragment By Tag ( FRAGMENT _ TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= ĠEp isode s Fragment . newInstance ( episode Title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . fragment _ container , Ġfragment , ĠFR AG MENT _ TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshow Player Controls () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshows Ġthe Ġfragment Ġ( that Ġshows Ġthe Ġplayer ĠUI ĠControls ) Ġif Ġthey Ġwere Ġpreviously Ġhidden ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . fragment _ playback _ controls ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ!= Ġnull Ġ&& Ġ! is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom Animations ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim ator . slide _ in _ from _ bottom , ĠR . anim ator . slide _ out _ to _ bottom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim ator . slide _ in _ from _ bottom , ĠR . anim ator . slide _ out _ to _ bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhide Player Controls () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhide s Ġthe Ġfragment Ġ( that Ġshows Ġthe Ġplayer ĠUI ĠControls ) Ġif Ġthey Ġwere Ġpreviously Ġshown ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . fragment _ playback _ controls ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ!= Ġnull Ġ&& Ġ! is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. hide ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġ// Ġadds Ġthe Ġpresenter Ġas Ġan Ġobserver Ġof Ġthe Ġlifecycle Ġso Ġit Ġcan Ġact Ġaccordingly ĊĠĠĠĠĠĠĠ Ġlifecycle . add Observer ( presenter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item ?. itemId Ġ== ĠR . id . action _ settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Activity . startActivity ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} Ċ } ĊĊ