package Ġcom . eng di ary . m ure ng . ui . base Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Main Scope Ċ import Ġkotlinx . coroutines . cancel Ċ Ċ /** Ċ Ġ* ĠBase Fragment Ċ Ġ* Ċ Ġ* Ġ@ param Ġlayout Res Id Ġëł Ī ìĿ´ ìķĦ ìĽ ĥ ĠResource ĠId Ċ Ġ* Ċ Ġ* Ġ@ property Ġbinding Ġë°Ķ ìĿ¸ ëĶ © Ġê°Ŀì²´ Ċ Ġ* Ġ@ property ĠviewModel ĠViewModel Ġê°Ŀì²´ Ċ Ġ* Ġ@ property ĠviewModel Factory ĠViewModel ĠìĿ Ħ ĠìĤ¬ìļ© íķĺê¸° ĠìľĦíķ´ Ġë°ĺ ëĵľ ìĭľ ĠíķĦìļĶ íķľ ĠViewModel Factory ĊĊ Ġ*/ Ċ abstract Ġclass ĠBase Fragment < B Ġ: ĠView Data Binding >( ĊĠĠĠ Ġ@ Layout Res Ġval Ġlayout Res Id : ĠInt Ċ ) Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠB ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Dispatch ers . Main ] ìĿĦ Ġê¸°ë³¸ ìľ¼ë¡ľ ĠìĤ¬ìļ© íķĺê³ł ĊĠĠĠĠ Ġ* Ġ[ on Destroy ] ìĹĲìĦľ Ġ[ cancel ][ Coroutine Scope . cancel ] ĠëĲĺ ëĬĶ Ġì ½Ķ ë£ ¨ íĭ ´ ĠìĬ¤ ì ½Ķ íĶĦ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Coroutine Ġê³µ ìĭĿ ë¬¸ ìĦľ ĠCor outine Ġscope ]( https :// kotlin lang . org / docs / reference / coroutines / coroutine - context - and - dispatch ers . html # coroutine - scope ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġui Scope : ĠCor outine Scope Ġ= ĠMain Scope () ĊĊĠĠĠ Ġprotected Ġabstract Ġval ĠviewModel : ĠBase ViewModel ? ĊĠĠĠ Ġval ĠviewModel Factory : ĠViewModel Provider . Android ViewModel Factory Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Provider . Android ViewModel Factory . getInstance ( require Activity (). application ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , Ġlayout Res Id , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠíĬ¹ ìłķ ĠíĶĦ ëłĪ ê·¸ ë ¨ ¼ íĬ¸ ë¥¼ Ġë Ŀ Ħ ìĽĮ ì¤Ģ ëĭ¤ . Ċ Ġ* Ċ Ġ* Ġ@ param Ġfm ĠFragment Manager Ċ Ġ* Ġ@ param Ġid ĠíĶĦ ëłĪ ê·¸ ë ¨ ¼ íĬ¸ ê°Ģ Ġëĵ¤ ìĸ´ ê° Ī Ġëł Ī ìĿ´ ìķĦ ìĽ ĥ Ġid Ċ Ġ*/ Ċ fun ĠBase Fragment <* >. navigate ( fm : ĠFragment Manager , Ġ@ Id Res Ġid : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġfm . run Ġ{ ĊĠĠĠĠĠĠĠ Ġbegin Transaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( id , Ġthis @ navigate , Ġthis @ navigate :: class . simple Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} Ċ } ĊĊĊ