package Ġxyz . har mony app . oly mp us blog . ui . main . article Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . Navigation UI Ċ import Ġxyz . har mony app . oly mp us blog . R Ċ import Ġxyz . har mony app . oly mp us blog . ui . UIC om munication Listener Ċ import Ġxyz . har mony app . oly mp us blog . ui . main . article . view model . Article ViewModel Ċ Ċ abstract Ġclass ĠBase Article Fragment Ċ constructor ( ĊĠĠĠ Ġprivate Ġval ĠviewModel Factory : ĠViewModel Provider . Factory Ċ ) Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġval ĠTAG : ĠString Ġ= Ġ" App Debug " ĊĊĠĠĠ Ġval ĠviewModel : ĠArticle ViewModel Ġby Ġview Models Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Factory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġui Communication Listener : ĠU IC om munication Listener ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup ActionBar With Nav Controller ( R . id . article Fragment , Ġactivity Ġas ĠAppCompatActivity ) ĊĠĠĠĠĠĠĠ Ġsetup Channel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Channel () Ġ= ĠviewModel . setup Channel () ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ActionBar With Nav Controller ( fragment Id : ĠInt , Ġactivity : ĠAppCompatActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Bar Configuration Ġ= ĠApp Bar Configuration ( set Of ( fragment Id )) ĊĠĠĠĠĠĠĠ ĠNavigation UI . setup ActionBar With Nav Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Bar Configuration ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Communication Listener Ġ= Ġcontext Ġas ĠU IC om munication Listener ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ"$ context Ġmust Ġimplement ĠU IC om munication Listener ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }