package Ġcom . android . m ull ig an marker Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Patterns Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view binding . library . fragment . view Binding Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . android . m ull ig an marker . databinding . Fragment New Player Binding Ċ import Ġcom . android . m ull ig an marker . model . Player Ċ import Ġcom . android . m ull ig an marker . view model . Player ViewModel ĊĊ Ċ class ĠNew Player Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġinterface ĠCall Back s { ĊĠĠĠĠĠĠĠ Ġfun Ġon Player Added () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġcallback : ĠCall Back s ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġbinding : ĠFragment New Player Binding Ġby Ġview Binding () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġplayer ViewModel : ĠPlayer ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ new _ player , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġplayer ViewModel Ġ= ĠViewModel Provider ( this ). get ( Player ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġbinding . save New Player BTN . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd New Player () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd New Player () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Create Ġvariables Ġto Ġstore Ġthe Ġdata Ġfrom Ġthe Ġtext Ġviews Ġand Ġconvert Ġto Ġappropriate Ġtype ĊĠĠĠĠĠĠĠ Ġvar ĠfirstName Ġ= Ġbinding . new Player FirstName . text . toString () ĊĠĠĠĠĠĠĠ Ġvar ĠlastName Ġ= Ġbinding . new Player LastName . text . toString () ĊĠĠĠĠĠĠĠ Ġvar Ġemail Ġ= Ġ Ġbinding . new Player Email . text . toString () ĊĠĠĠĠĠĠĠ Ġvar Ġphone Num Ġ= Ġbinding . new Player Phone Num . text . toString () ĊĠĠĠĠĠĠĠ Ġvar Ġhand ic ap Ġ= Ġconvert ToInt () ĊĊĠĠĠĠĠĠĠ Ġ// Check Ġfor Ġvalid Ġemail ĊĠĠĠĠĠĠĠ Ġif (! is Email Valid ( email )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Check Ġfor Ġvalid Ġphone Ġnumber ĊĠĠĠĠĠĠĠ Ġif Ġ(! isValid PhoneNumber ( phone Num )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphone Num = Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Check Ġif Ġthe Ġtwo Ġimportant Ġfields Ġare Ġblank ĊĠĠĠĠĠĠĠ Ġif (!( firstName ). isNull Or Blank () Ġ&& Ġ Ġ!( lastName ). isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Player Ġ= ĠPlayer ( 0 , ĠfirstName , ĠlastName , Ġemail , Ġphone Num , Ġhand ic ap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer ViewModel . insert Player ( new Player ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" Successfully Ġadded Ġnew Ġplayer !", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failure Ġin Ġadding Ġnew Ġplayer . ĠPlayer Ġneeds Ġboth Ġfirst Ġand Ġlast Ġname .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcallback ?. on Player Added () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġconvert ToInt (): Int { ĊĠĠĠĠĠĠĠ Ġvar Ġhand ic ap String : ĠString Ġ= Ġbinding . new Player Hand ic ap . text . toString () ĊĊĠĠĠĠĠĠĠ Ġvar Ġhand ic ap : Int Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġprintln (" This Ġis Ġthe Ġhand ic ap Ġ$ hand ic ap String ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( hand ic ap String )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhand ic ap Ġ= Ġhand ic ap String . toInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġhand ic ap ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġis Email Valid ( email : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPattern s . EMAIL _ ADDRESS . matcher ( email ). matches () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun ĠisValid PhoneNumber ( phone : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPattern s . PHONE . matcher ( phone ). matches () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġcallback Ġ= Ġcontext Ġas ĠCall Back s ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ Ġcallback Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }