package Ġcom . example . my application . app . base Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ 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 Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ Ċ abstract Ġclass ĠBase Fragment < V DB : ĠView Data Binding > Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġlateinit Ġvar ĠmContext : ĠContext ĊĠĠĠ Ġlateinit Ġvar Ġm Activity : ĠAppCompatActivity ĊĠĠĠ Ġprivate Ġvar Ġfragment Provider : ĠViewModel Provider ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġactivity Provider : ĠViewModel Provider ? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġbinding : ĠV DB ĊĠĠĠ Ġprivate Ġvar Ġm Binding : ĠView Data Binding ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Fragment ViewModel () ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ ĠmContext Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġm Activity Ġ= Ġcontext Ġas ĠAppCompatActivity ĊĠĠĠĠĠĠĠ Ġinit ViewModel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġget Layout Id ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" check base fragment ", it . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetStatus Color () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset System Inv ade Black () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , Ġit , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġobserve () ĊĠĠĠĠĠĠĠ ĠonClick () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġinit ViewModel () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġinit Fragment ViewModel () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġobserve () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġ< T Ġ: ĠViewModel ?> ĠgetActivity ViewModel ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Provider Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Provider Ġ= ĠViewModel Provider ( m Activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġactivity Provider !!. get ( model Class ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġ< T Ġ: ĠViewModel ?> Ġget Fragment ViewModel ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Provider Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Provider Ġ= ĠViewModel Provider ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfragment Provider !!. get ( model Class ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprotected Ġfun Ġnav (): ĠNav Controller Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNav Host Fragment . find Nav Controller ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠonClick () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠsetStatus Color () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġset System Inv ade Black () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġinit View () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġload Data () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġinit ( savedInstanceState : ĠBundle ?) ĊĊĊĠĠĠ Ġabstract Ġfun Ġget Layout Id (): ĠInt ? Ċ }