package Ġcom . h az arb el ge . the mov ied b . base Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . view binding . View Binding Ċ import Ġcom . h az arb el ge . the mov ied b . util . get ViewModel Via K oin Ċ import Ġcom . h az arb el ge . the mov ied b . widget . error _ message . ErrorMessage Ċ import Ġjava . lang . reflect . Parameterized Type Ċ Ċ abstract Ġclass ĠBase Activity < VM Ġ: ĠBase ViewModel , ĠVB Ġ: ĠView Binding > Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġerror Ui Ġby Ġlazy Ġ{ ĠError Message ( this ) Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Class : ĠClass < VM > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġ( java Class . generic Super class Ġas ĠParameter ized Type ). actual Type Arguments [ 0 ] Ġas ĠClass < VM > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġval Ġbinding : ĠVB ĊĊĠĠĠ Ġprotected Ġval ĠviewModel : ĠVM Ġby Ġlazy Ġ{ Ġget ViewModel Via K oin ( viewModel Class ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ NO ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Message Observer . observe ( this @ Base Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ui . errorMessage ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun ĠstartActivity ( class Canonical Name : ĠString , Ġbundle Pair : ĠPair < String , ĠBundle >? Ġ= Ġnull Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle Pair ?. let Ġ{ Ġput Extra ( it . first , Ġit . second ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ClassName ( this @ Base Activity , Ġclass Canonical Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }