package Ġcom . github . demo . ui . base Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . github . demo . Git App Ċ import Ġcom . github . demo . di . components . Activity Component Ċ import Ġcom . github . demo . di . components . D agger Activity Component Ċ import Ġcom . github . demo . di . modules . Activity Module Ċ import Ġjavax . inject . Inject Ċ Ċ abstract Ġclass ĠBase Activity < VM Ġ: ĠBase ViewModel > Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠVM ĊĊĠĠĠ Ġ@ Layout Res ĊĠĠĠ Ġabstract Ġfun Ġget Layout Resource (): ĠInt ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġinject Dependency ( build Dependency ()) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( get Layout Resource ()) ĊĠĠĠĠĠĠĠ Ġsetup Observer s () ĊĠĠĠĠĠĠĠ Ġsetup View ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel . onCreate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġinject Dependency ( component : ĠActivity Component ) ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Dependency () Ġ= ĠD agger Activity Component . builder () ĊĠĠĠĠĠĠĠ Ġ. activity Module ( Activity Module ( this )) ĊĠĠĠĠĠĠĠ Ġ. application Component (( application Ġas ĠGit App ). component ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĊĠĠĠ Ġopen Ġfun Ġsetup Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . message String Id . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. run Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. run Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Message ( getString ( first ), ĠgetString ( second )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġshow Message ( error Title : ĠString , ĠerrorMessage : ĠString ) Ġ{} ĊĊĠĠĠ Ġopen Ġfun Ġsetup View ( savedInstanceState : ĠBundle ?) Ġ{} Ċ }