package Ġcom . bow oon . android . h ilt _ practice . base Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Call Super Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ Ċ abstract Ġclass ĠData Binding Fragment With ViewModel < V Ġ: ĠView Data Binding , ĠVM Ġ: ĠViewModel , ĠACT _ VM Ġ: ĠViewModel >( ĊĠĠĠ Ġ@ Layout Res Ġprivate Ġval Ġlayout Id : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġfragment VM Class : ĠClass < VM >, ĊĠĠĠ Ġprivate Ġval Ġactivity VM Class : ĠClass < ACT _ VM > Ċ ) Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġbinding : ĠV ĊĠĠĠ Ġval Ġfragment VM : ĠVM Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( this ). get ( fragment VM Class ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġactivity VM : ĠACT _ VM Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( this ). get ( activity VM Class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , Ġlayout Id , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġinit LiveData () ĊĠĠĠ Ġabstract Ġfun Ġinit Binding () Ċ }