package Ġcom . github . b ass aer . simp lem v vm . counter Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . github . b ass aer . simp lem v vm . R Ċ import Ġcom . github . b ass aer . simp lem v vm . ViewModel Holder Ċ import Ġcom . github . b ass aer . simp lem v vm . data . source . local . User Database Ċ import Ġcom . github . b ass aer . simp lem v vm . data . source . local . User Local DataSource Ċ import Ġcom . github . b ass aer . simp lem v vm . data . source . local . UserRepository Ċ import Ġkotlinx . android . synt hetic . main . counter _ act .* Ċ Ċ class ĠCounter Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" MAIN _ VIEW _ MODEL _ TAG " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠCount ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . counter _ act ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Show Home Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġfind OrCreate View Fragment () ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġfind OrCreate ViewModel () ĊĊĠĠĠĠĠĠĠ Ġfragment . count ViewModel Ġ= ĠviewModel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind OrCreate View Fragment (): ĠCounter Fragment Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . content Frame ) Ġas ? ĠCounter Fragment ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġintent . getString Extra ( Counter Fragment . ARGUMENT _ USER _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= ĠCounter Fragment . newInstance ( userId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . add ( R . id . content Frame , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind OrCreate ViewModel (): ĠCount ViewModel Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġval Ġretain ViewModel Ġ= Ġsupport FragmentManager . find Fragment By Tag ( TAG ) Ġas ? ĠViewModel Holder < Count ViewModel > ĊĠĠĠĠĠĠĠ Ġif Ġ( retain ViewModel ?. viewModel Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġretain ViewModel . viewModel Ġas ĠCount ViewModel ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠInject ĊĠĠĠĠĠĠĠ Ġval Ġuser Dao Ġ= ĠUser Database . getInstance ( application Context ). user Dao () ĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠUser Repository . getInstance ( User Local DataSource . getInstance ( user Dao )) ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠCount ViewModel ( repository ) ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġtransaction . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Holder . create Container ( viewModel ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAG ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtransaction . commit () ĊĠĠĠĠĠĠĠ Ġreturn ĠviewModel ĊĠĠĠ Ġ} Ċ Ċ } Ċ