package Ġcom . ric ardo jr so usa . mov ook . presentation Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . Nav Directions Ċ import Ġandroidx . navigation . fragment . Fragment Navigator Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . transition . Transition Inflater Ċ import Ġcom . ric ardo jr so usa . mov ook . R Ċ Ċ abstract Ġclass ĠBase Fragment < T Ġ: ĠBase ViewModel >( private Ġval Ġcontent Layout : ĠInt ) Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġroot View : ĠFrame Layout ? Ġ= Ġnull ĊĠĠĠ Ġabstract Ġval ĠviewModel : ĠT ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnav Controller : ĠNav Controller ĊĠĠĠ Ġprivate Ġvar Ġloading View : ĠView ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġshared Element Enter Transition Ġ= ĠTransition Inflater . from ( context ). inflate Transition ( android . R . transition . move ) ĊĠĠĠĠĠĠĠ Ġshared Element Return Transition Ġ= ĠTransition Inflater . from ( context ). inflate Transition ( android . R . transition . move ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġfind Nav Controller () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate ( action : ĠNav Directions , Ġextras : ĠFragment Navigator . Extras ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnav Controller . navigate ( action , Ġextras ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate ( action : ĠNav Directions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnav Controller . navigate ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġroot View Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġloading View Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġroot View Ġ= Ġinflater . inflate ( R . layout . fragment _ base , Ġcontainer , Ġfalse ) Ġas ĠFrame Layout ĊĠĠĠĠĠĠĠ Ġloading View Ġ= Ġinflater . inflate ( R . layout . fragment _ loading , Ġroot View , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġpost p one Enter Transition () ĊĊĠĠĠĠĠĠĠ Ġval Ġcontent View Ġ= Ġinflater . inflate ( content Layout , Ġroot View , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġroot View ?. addView ( content View ) ĊĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠ Ġroot View ?. addView ( loading View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġroot View ?. remove View ( loading View ) ĊĠĠĠ Ġ} Ċ }