package Ġcom . car ol . list maker . activities Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . InputType Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . car ol . list maker . fragments . List Detail Fragment Ċ import Ġcom . car ol . list maker . List Selection Fragment Ċ import Ġcom . car ol . list maker . R Ċ import Ġcom . car ol . list maker . TaskList Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĊĠĠĠ ĠList Selection Fragment . On ListItem Fragment Interaction Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlarge Screen Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġlist Fragment : ĠList Detail Fragment ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġfragment Container : ĠFrame Layout ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġlist Selection Fragment : ĠList Selection Fragment Ġ= ĠList Selection Fragment . newInstance () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġlist Selection Fragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . list _ selection _ fragment ) Ġas ĠList Selection Fragment ĊĊĠĠĠĠĠĠĠ Ġfragment Container Ġ= ĠfindViewById ( R . id . fragment _ container ) ĊĊĠĠĠĠĠĠĠ Ġlarge Screen Ġ= Ġ( fragment Container Ġ!= Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Create List Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġaction Ġbar Ġitem Ġclicks Ġhere . ĠThe Ġaction Ġbar Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġso Ġlong ĊĠĠĠĠĠĠĠ Ġ// Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml . ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ settings Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Create List Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġdialog Title Ġ= ĠgetString ( R . string . name _ of _ list ) ĊĠĠĠĠĠĠĠ Ġval Ġpositive Button Title Ġ= ĠgetString ( R . string . create _ list ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Title EditText Ġ= ĠEditText ( this ) ĊĠĠĠĠĠĠĠ Ġlist Title EditText . input Type Ġ= ĠInput Type . TYPE _ CLASS _ TEXT ĊĊĠĠĠĠĠĠĠ Ġbuilder . setTitle ( dialog Title ) ĊĠĠĠĠĠĠĠ Ġbuilder . setView ( list Title EditText ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 3 ĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button ( positive Button Title ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠTask List ( list Title EditText . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Selection Fragment . add List ( list ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow List Detail ( list ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 4 ĊĠĠĠĠĠĠĠ Ġbuilder . create (). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow List Detail ( list : ĠTask List ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! large Screen ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Detail Intent Ġ= ĠIntent ( this , ĠList Detail Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Detail Intent . putExtra ( INT ENT _ LIST _ KEY , Ġlist ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( list Detail Intent , ĠLIST _ DETAIL _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġlist . name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Fragment Ġ= ĠList Detail Fragment . newInstance ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Fragment ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . fragment _ container , Ġit , ĠgetString ( R . string . list _ fragment _ tag )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Create Task Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Create Task Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask EditText Ġ= ĠEditText ( this ) ĊĠĠĠĠĠĠĠ Ġtask EditText . input Type Ġ= ĠInput Type . TYPE _ CLASS _ TEXT ĊĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . task _ to _ add ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( task EditText ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . add _ task ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġtask EditText . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Fragment ?. add Task ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 1 ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġresources . getString ( R . string . app _ name ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 ĊĠĠĠĠĠĠĠ Ġlist Fragment ?. list ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Selection Fragment . list DataManager . save List ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 3 ĊĠĠĠĠĠĠĠ Ġlist Fragment ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Fragment Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 4 ĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Create List Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ListItem Clicked ( list : ĠTask List ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow List Detail ( list ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠLIST _ DETAIL _ REQUEST _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Selection Fragment . save List ( data . get Parcelable Extra ( INT ENT _ LIST _ KEY ) Ġas ĠTask List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠINTENT _ LIST _ KEY Ġ= Ġ" list " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLIST _ DETAIL _ REQUEST _ CODE Ġ= Ġ 1 2 3 ĊĠĠĠ Ġ} Ċ } Ċ