package Ġio . ere hs aws alt ul . ti ptime ĊĊ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . KeyEvent . KEYCODE _ ENTER Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġio . ere hs aws alt ul . ti ptime . databinding . Activity Main Binding Ċ import Ġjava . text . NumberFormat Ċ import Ġjava . util .* ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġbinding . calculate Button . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Tip () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . cost Of Service EditText . setOn Key Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview , ĠkeyCode , Ġ_ Ġ-> Ġhandle KeyEvent ( view , ĠkeyCode ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Tip () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// com . google . android . material . text field . TextInput EditText ĊĠĠĠĠĠĠ Ġif Ġ( binding . cost Of Service . is Helper Text Enabled ) binding . cost Of Service . is Helper Text Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġcost Ġ= Ġbinding . cost Of Service EditText . text . toString (). toDouble OrNull () ĊĠĠĠĠĠĠĠĠ Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tip Result . text Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . cost Of Service . is Helper Text Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . cost Of Service . helper Text Ġ= Ġ" Please ĠEnter ĠCost Ġof ĠService ." ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// return ĠToast . makeText ( this , Ġ" Please ĠEnter ĠCost Ġof ĠService .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġval Ġtip Percentage Ġ= Ġwhen ( binding . tip Options . checked RadioButton Id ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . option Tw enty Percent . id Ġ-> Ġ 0 . 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . option E ight een Percent . id Ġ-> Ġ 0 . 1 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 . 1 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġtip Ġ= Ġtip Percentage Ġ* Ġcost ĊĠĠĠĠĠĠĠ Ġif ( binding . round Up Switch . isChecked ) tip = kotlin . math . ceil ( tip ) ĊĊĠĠĠĠĠĠĠ Ġval Ġformatted Tip Ġ= ĠNumber Format . getC urrency Instance ( Locale (" en ", Ġ" ZM ")). format ( tip ) ĊĠĠĠĠĠĠĠ Ġbinding . tip Result . text Ġ= ĠgetString ( R . string . tip _ amount , Ġformatted Tip ) ĊĊĠĠĠĠĠĠĠ Ġbinding . cost Of Service . is Helper Text Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbinding . cost Of Service . helper Text Ġ= Ġbinding . tip Result . text ĊĊĠĠĠĠĠĠĠ Ġ// Toast . makeText ( this , Ġ"${ binding . tip Result . text }", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ// binding . cost Of Service . setText ("") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle KeyEvent ( view : ĠView , ĠkeyCode : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( keyCode Ġ== ĠKEY CODE _ ENTER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHide Ġthe Ġkeyboard ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Method Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Method Manager . hide Soft Input From Window ( view . window Token , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// calculate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Tip () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ }