package Ġapp . ath ome . core . interfaces Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġjavax . inject . Inject Ċ Ċ abstract Ġclass ĠBase Fragment < VM Ġ: ĠViewModel >( layout Id : ĠInt ) Ġ: ĠFragment ( layout Id ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Fragment . get Navigator (): ĠT Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( require Activity () Ġas ĠNavigator Provider ). provide Navigator () Ġas ĠT ĊĊĠĠĠĠĠĠĠ Ġfun ĠFragment . getBase Application (): ĠBase Application Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). application Ġas ĠBase Application ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠVM ĊĊĠĠĠ Ġprotected Ġabstract Ġfun ĠgetClass ViewModel (): ĠClass < VM > ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinject Fragment () ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġinject Fragment () ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( viewModel Store , ĠviewModel Factory ). get ( getClass ViewModel ()) ĊĠĠĠĠĠĠĠ Ġon ViewModel Created () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon ViewModel Created () Ċ } Ċ