package Ġcom . che ise _ proj . e _ commerce Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġcom . che ise _ proj . e _ commerce . factory . ViewModel Factory Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġdagger . android . support . D agger Fragment Ċ import Ġjavax . inject . Inject Ċ Ċ abstract Ġclass ĠBase Fragment < VM Ġ: ĠViewModel > Ġ: ĠD agger Fragment () Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġfactory : ĠViewModel Factory ĊĠĠĠ Ġprotected Ġval Ġhandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠ Ġprotected Ġlateinit Ġvar ĠviewModel : ĠVM ĊĠĠĠ Ġabstract Ġfun Ġget ViewModel (): ĠClass < VM > ĊĠĠĠ Ġopen Ġfun Ġget ToolBar (): ĠToolbar ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġfun Ġinit Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Host Fragment Ġ= Ġfind Nav Controller () ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= Ġget ToolBar () ĊĠĠĠĠĠĠĠ Ġtoolbar ?. setup With Nav Controller ( nav Controller Ġ= Ġnav Host Fragment ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Toolbar () ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this , Ġfactory )[ get ViewModel ()] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġshow No Data ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , ĠgetString ( R . string . no _ data _ msg ), ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġsn ack Message ( view : ĠView , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġmessage , ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊ Ċ }