package Ġcom . example . expense manager Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . example . expense manager . database . Purchase Entity Ċ import Ġcom . example . expense manager . database . Purchase ViewModel Ċ import Ġcom . example . expense manager . databinding . Fragment Add Exp enses Binding Ċ Ċ class ĠAdd Exp enses Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Add Exp enses Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġ Ġm Purchase ViewModel Ġ: ĠPurchase ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġ// return Ġinflater . inflate ( R . layout . fragment _ add _ exp enses , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Add Exp enses Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġm Purchase ViewModel Ġ= ĠViewModel Provider ( this ). get ( Purchase ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Save Exp enses . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert DataTo Database () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinsert DataTo Database (){ ĊĠĠĠĠĠĠĠ Ġval Ġpurchase Id Ġ= Ġbinding . ed Purchase Id . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġpurchase Type Ġ= Ġbinding . ed Purchase Type . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġpurchase Date Ġ= Ġbinding . ed Date . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġstore Name Ġ= Ġbinding . ed Store Name . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġstore Loc Ġ= Ġbinding . ed Store Location . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġitems Pur Ġ= Ġbinding . ed Items Purchase d . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġpur Total Ġ= Ġbinding . ed Total Cost . text . toString () ĊĊĠĠĠĠĠĠĠ Ġif ( input Check ( purchase Id . toInt (), Ġpurchase Type , purchase Date , Ġstore Name , store Loc , Ġitems Pur , Ġpur Total )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpurchase Ġ= ĠPurchase Entity ( purchase Id . toInt (), Ġpurchase Type , Ġpurchase Date , Ġstore Name , Ġstore Loc , Ġitems Pur , Ġpur Total ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Purchase ViewModel . add Purchase ( purchase ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" Successfully Ġadded !", ĠToast . LENGTH _ LONG ). show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . action _ ad dex p enses Fragment _ to _ display expense Fragment ) ĊĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" Please Ġfill Ġout Ġall Ġfields !", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinput Check ( ĊĠĠĠĠĠĠĠ Ġpurchase Id : ĠInt , Ġpurchase Type : ĠString , ĊĠĠĠĠĠĠĠ Ġpurchase Date : ĠString , Ġstore Name : ĠString , ĊĠĠĠĠĠĠĠ Ġstore Loc : ĠString , ĊĠĠĠĠĠĠĠ Ġitems Pur : ĠString , Ġpur Total : ĠString ): ĠBoolean { ĊĠĠĠĠĠĠĠ Ġreturn Ġ!( TextUtils . isEmpty ( purchase Id . toString ()) Ġ&& ĠText Utils . isEmpty ( purchase Type ) Ġ&& ĠText Utils . isEmpty ( purchase Date ) Ġ&& ĠText Utils . isEmpty ( store Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠText Utils . isEmpty ( store Loc ) Ġ&& ĠText Utils . isEmpty ( items Pur ) Ġ&& ĠText Utils . isEmpty ( pur Total )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }