package Ġcom . and or . bottom sheet lock it . bottom Menu ĊĊ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . and or . bottom sheet lock it . R Ċ import Ġcom . and or . bottom sheet lock it . core . Main ViewModel Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ*/ Ċ class ĠBase Bottom Sheet Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠMain ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ base _ bottom _ sheet , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( activity !! ). get ( Main ViewModel :: class . java ) Ċ // ĠĠĠĠĠĠĠ Ġhandle App StateChange ( viewModel . get AppState Stream (). value !! ) ĊĠĠĠĠĠĠĠ ĠviewModel . get AppState Stream (). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġhandle App StateChange ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġprivate Ġfun Ġhandle App StateChange ( app State : ĠApp State ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġnav Controller Bottom Sheet Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠNav Host Fragment . find Nav Controller ( this ) Ċ // ĠĠĠĠĠĠĠ Ġwhen Ġ( app State . bottom Menu State ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBottom Menu State . Visible . Bottom Sheet 1 Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller Bottom Sheet . navigate ( R . id . action _ base Bottom Sheet Fragment _ to _ bottom Menu Fragment 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBottom Menu State . Visible . Bottom Sheet 2 Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller Bottom Sheet . navigate ( R . id . action _ base Bottom Sheet Fragment _ to _ bottom Menu Fragment 2 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBottom Menu State . Visible . Bottom Sheet 3 Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller Bottom Sheet . navigate ( R . id . action _ base Bottom Sheet Fragment _ to _ bottom Menu Fragment 3 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ } Ċ