package Ġcom . example . counter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . TextView Ċ import Ġcom . example . counter . databinding . Activity Main Binding Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġ// decl aring Ġtext Ġ& Ġedit Ġtext Ġview Ġusing Ġlateinit Ġb cz Ġof Ġscope Ċ // ĠĠĠ Ġprivate Ġlateinit Ġvar Ġnumber Text Ġ: ĠTextView Ċ // ĠĠĠ Ġprivate Ġlateinit Ġvar Ġnumber Input Ġ: ĠEditText Ċ // ĠĠĠ Ġprivate Ġlateinit Ġvar Ġinterval Ġ: ĠEditText Ċ // ĠĠĠ Ġprivate Ġlateinit Ġvar Ġsummary Ġ: ĠTextView ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) Ċ // ĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( LayoutInflater . from ( application Context )) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġ// refer encing Ġall Ġbuttons Ċ // ĠĠĠĠĠĠĠ Ġval Ġsubmit Button Ġ: ĠButton Ġ= ĠfindViewById ( R . id . main _ act _ bt _ submit ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġrandom Button Ġ: ĠButton Ġ= ĠfindViewById ( R . id . main _ act _ bt _ random ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġincrement Button Ġ: ĠButton Ġ= ĠfindViewById ( R . id . main _ act _ bt _ increment ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġdecrement Button Ġ: ĠButton Ġ= ĠfindViewById ( R . id . main _ act _ bt _ decrement ) ĊĊĠĠĠĠĠĠĠ Ġ// setting Ġclick listeners Ġfor Ġeach Ġbutton ĊĊĠĠĠĠĠĠĠ Ġbinding . main Act Bt Submit . setOnClickListener Ġ{ Ġsubmit Number () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . main Act Bt Random . setOnClickListener Ġ{ Ġgenerate Random Number () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . main Act Bt Increment . setOnClickListener Ġ{ Ġchange Number ("+ ") Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . main Act Bt De crement . setOnClickListener Ġ{ Ġchange Number ("- ") Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// refer encing Ġlateinit Ġviews Ġhere Ċ // ĠĠĠĠĠĠĠ Ġnumber Text Ġ= ĠfindViewById ( R . id . main _ act _ tv _ number ) Ċ // ĠĠĠĠĠĠĠ Ġnumber Input Ġ= ĠfindViewById ( R . id . main _ act _ et _ input ) Ċ // ĠĠĠĠĠĠĠ Ġinterval Ġ= ĠfindViewById ( R . id . main _ act _ et _ interval ) Ċ // ĠĠĠĠĠĠĠ Ġsummary Ġ= ĠfindViewById ( R . id . main _ act _ tv _ summary ) ĊĊĠĠĠĠĠĠĠ Ġif ( savedInstanceState Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Act Tv Number . text Ġ= ĠsavedInstanceState . getString (" number Text ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Act Et Interval . setText ( savedInstanceState . getString (" interval ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Act Tv Summary . text Ġ= ĠsavedInstanceState . getString (" summary ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State . putString (" number Text ", binding . main Act Tv Number . text . toString ()) ĊĠĠĠĠĠĠĠ Ġout State . putString (" interval ", binding . main Act Et Interval . text . toString ()) ĊĠĠĠĠĠĠĠ Ġout State . putString (" summary ", binding . main Act Tv Summary . text . toString ()) ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġget Ġa Ġnumber Ġfrom Ġthe Ġedit Text Ġand Ġdisplay Ġto Ġthe Ġscreen ĊĠĠĠ Ġprivate Ġfun Ġsubmit Number (){ ĊĠĠĠĠĠĠĠ Ġvar Ġstarting Number Ġ= Ġbinding . main Act Et Input . text . toString () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( starting Number Ġ== Ġ""){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstarting Number Ġ= Ġ(- 1 0 0 .. 1 0 0 ). random (). toString () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . main Act Tv Number . text Ġ= Ġstarting Number ĊĠĠĠĠĠĠĠ Ġbinding . main Act Et Input . setText ("") ĊĊĠĠĠĠĠĠĠ Ġhide keyboard () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// generate Ġrandom Ġnumber Ġand Ġdisplay Ġto Ġscreen ĊĠĠĠ Ġprivate Ġfun Ġgenerate Random Number (){ ĊĠĠĠ Ġ// random Ġnumber Ġfrom Ġ- 1 0 0 Ġto Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġrandom Number Ġ= Ġ(- 1 0 0 .. 1 0 0 ). random () ĊĠĠĠĠĠĠĠ Ġbinding . main Act Tv Number . text Ġ= Ġrandom Number . toString () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// increment Ġor Ġdecrement ĊĠĠĠ Ġprivate Ġ Ġfun Ġchange Number ( operation Ġ: ĠString ){ ĊĠĠĠĠĠĠĠ Ġ// get Ġthe Ġcurrent Ġnumber Ġ& Ġincrement Ġnumber ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Number Ġ= Ġbinding . main Act Tv Number . text . toString (). toInt () ĊĠĠĠĠĠĠĠ Ġvar Ġincrement Value Ġ= Ġbinding . main Act Et Interval . text . toString () ĊĊĠĠĠĠĠĠĠ Ġ// check Ġif Ġincrement Ġvalue Ġis Ġblank ĊĠĠĠĠĠĠĠ Ġif ( increment Value Ġ== Ġ"") ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincrement Value =" 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// decrement Ġor Ġincrement Ġa Ġvalue ĊĠĠĠĠĠĠĠ Ġif Ġ( operation Ġ== Ġ"+ "){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// determine Ġnew Ġnumber Ġto Ġdisplay ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Number Ġ= Ġcurrent Number Ġ+ Ġincrement Value . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Act Tv Number . text Ġ= Ġnew Number . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// update Ġsummary Ġview ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Act Tv Summary . text Ġ= Ġ"$ current Number Ġ+ Ġ$ increment Value Ġ= Ġ$ new Number " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// determine Ġnew Ġnumber Ġto Ġdisplay ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Number Ġ= Ġcurrent Number Ġ- Ġincrement Value . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Act Tv Number . text Ġ= Ġnew Number . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// update Ġsummary Ġview ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . main Act Tv Summary . text Ġ= Ġ"$ current Number Ġ- Ġ$ increment Value Ġ= Ġ$ new Number " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhide keyboard () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġhide keyboard (){ ĊĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( binding . main Act Tv Number . window Token , Ġ 0 ) ĊĠĠĠ Ġ} Ċ }