package Ġcom . cel lf ish pool . news . ui . base Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġjavax . inject . Inject Ċ Ċ abstract Ġclass ĠBase Activity < VM Ġ: ĠViewModel , ĠDB Ġ: ĠView Data Binding > Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠVM ĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠDB ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbind View ( get Layout Id ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind View ( layout Res : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , Ġlayout Res ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this , ĠviewModel Factory ). get ( get ViewModel Class ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġget ViewModel Class (): ĠClass < VM > ĊĊĠĠĠ Ġ@ Layout Res ĊĠĠĠ Ġabstract Ġfun Ġget Layout Id (): ĠInt Ċ }