package Ġcom . her din . android . base . activ ty Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġcom . her din . android . base . vm . Base ViewModel Ċ Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġjava . lang . reflect . Parameterized Type ĊĊ Ċ /** Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 4 - 2 0 2 1 , ĠArc Video Ġ æĿ Ń å·ŀ å½ĵ èĻ ¹ ç§ĳ æĬĢ èĤ¡ ä»½ æľī éĻĲ åħ¬åı¸ Ċ Ġ* Ċ Ġ* Ġ@ author : Ġher din Ċ Ġ* Ġ@ email ï¼ļ Ġhe ding @ arc video . com Ċ Ġ* Ġ@ date : Ġ 2 0 2 1 / 8 / 1 8 Ċ Ġ* Ġ@ desc : Ċ Ġ* Ġ@ version : ĠV - 1 . 0 . 0 Ċ Ġ*/ Ċ abstract Ġclass ĠBase Activity < DB Ġ: ĠView Data Binding Ġ, ĠVM Ġ: ĠBase ViewModel > Ġ: ĠRoot Activity () Ġ{ ĊĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġm Binding : ĠDB ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġm ViewModel : ĠVM ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġm Binding Ġ= ĠData Binding Util . set ContentView ( this , Ġget Layout Id ()) ĊĠĠĠĠĠĠĠ Ġm Binding ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Bindings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Owner Ġ= Ġthis @ Base Activity ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm ViewModel Ġ= Ġcreate ViewModel () ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠĠĠĠĠ Ġinit Observable () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º viewModel ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate ViewModel (): ĠVM Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider . Android ViewModel Factory ( application ) ĊĠĠĠĠĠĠĠ Ġ). get ( get VM ( this )) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< VM > Ġget VM ( obj : ĠAny ): ĠVM Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( obj . java Class . generic Super class Ġas ĠParameter ized Type ). actual Type Arguments [ 1 ] Ġas ĠVM ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Layout Res ĊĠĠĠ Ġabstract Ġfun Ġget Layout Id (): ĠInt ĊĊĠĠĠ Ġabstract Ġfun Ġinit View () ĊĊĠĠĠ Ġabstract Ġfun Ġinit Data () ĊĊĠĠĠ Ġabstract Ġfun Ġinit Observable () ĊĊĊĊĊ Ċ }