package Ġru . touch in . rob os w ag . bottom _ navigation _ view controller Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Sparse Array Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġru . touch in . rob os w ag . bottom _ navigation _ base . Base Bottom Navigation Controller Ċ import Ġru . touch in . rob os w ag . navigation _ view controller . fragments . ViewController Fragment Ċ Ċ class ĠBottom Navigation Controller ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġfragment Manager : ĠFragment Manager , ĊĠĠĠĠĠĠĠ Ġview Controllers : ĠSparse Array < Navigation Tab >, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġwrap With Navigation Container : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġ@ Id Res Ġprivate Ġval Ġdefault Tab Id : ĠInt Ġ= Ġ 0 , Ġ// ĠIf Ġit Ġzero Ġback Ġpress Ġwith Ġempty Ġfragment Ġback Ġstack Ġwould Ġclose Ġthe Ġapp ĊĠĠĠĠĠĠĠ Ġ@ Id Res Ġprivate Ġval Ġcontent Container View Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Layout Res Ġprivate Ġval Ġcontent Container Layout Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġon Re select Listener : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ: ĠBase Bottom Navigation Controller < Navigation Tab >( ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠ Ġfragment Manager Ġ= Ġfragment Manager , ĊĠĠĠĠĠĠĠ Ġtabs Ġ= Ġview Controllers , ĊĠĠĠĠĠĠĠ Ġdefault Tab Id Ġ= Ġdefault Tab Id , ĊĠĠĠĠĠĠĠ Ġcontent Container View Id Ġ= Ġcontent Container View Id , ĊĠĠĠĠĠĠĠ Ġcontent Container Layout Id Ġ= Ġcontent Container Layout Id , ĊĠĠĠĠĠĠĠ Ġwrap With Navigation Container Ġ= Ġwrap With Navigation Container Ċ ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Tab Re selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Re select Listener ?. invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Navigation Container Class () Ġ= ĠNavigation Container Fragment :: class . java ĊĊĠĠĠ Ġoverride Ġfun Ġis Tab Class ( tab : ĠNavigation Tab , Ġfragment : ĠFragment ?): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( wrap With Navigation Container ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . is Tab Class ( tab , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( fragment Ġas ĠView Controller Fragment < *, Ġ*> ). view Controller Class Ġ=== Ġtab . cls ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ Ċ } ĊĊ