package Ġcom . med ie ver one . base _ presentation Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util . inflate Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ Ċ abstract Ġclass ĠBase Fragment < B Ġ: ĠView Data Binding , ĠVM Ġ: ĠViewModel > Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġabstract Ġval Ġlayout Id : ĠInt ĊĠĠĠ Ġabstract Ġval ĠviewModel Factory : ĠViewModel Provider . Factory ĊĠĠĠ Ġabstract Ġvar ĠviewModel : ĠVM ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠB ? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġval Ġbinding ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ binding !! ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this , ĠviewModel Factory )[ get ViewModel Class ()] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġinf late ( in flater , Ġlayout Id , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġsetup Binding () ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġget ViewModel Class (): ĠClass < VM > ĊĊĠĠĠ Ġabstract Ġfun Ġsetup Binding () Ċ } Ċ