package Ġcom . car ter h udson . example Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Factory Ċ import Ġcom . car ter h udson . instantiate Ċ import Ġcom . car ter h udson . name Of Ċ import Ġcom . car ter h udson . example . databinding . Activity Main Binding Ċ import Ġcom . car ter h udson . example . injection . D agger Example Component Ċ import Ġcom . car ter h udson . example . injection . module . Fragment Module Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠ Ġ@ Inject ĊĠ Ġlateinit Ġvar Ġfragment Factory : ĠFragment Factory ĊĊĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ ĠD agger Example Component ĊĠĠĠĠĠ Ġ. builder () ĊĠĠĠĠĠ Ġ. fragment Module ( Fragment Module ()) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠ Ġ. inject ( this ) ĊĊĠĠĠ Ġsupport FragmentManager . fragment Factory Ġ= Ġfragment Factory ĊĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĊĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠ Ġfrag AB utton . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġload Fragment Into < Fragment A >( ĊĠĠĠĠĠĠĠĠĠ Ġbinding . fragment Container . id , ĊĠĠĠĠĠĠĠĠĠ ĠFragment A . make Args (" look Ġa Ġstring ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠ Ġfrag B Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġload Fragment Into < Fragment B >( binding . fragment Container . id , ĠFragment B . ARG _ KEY Ġto Ġ 1 0 1 0 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġinline Ġfun Ġ< re ified ĠFragment T Ġ: ĠFragment > Ġload Fragment Into ( ĊĠĠĠ Ġ@ Id Res Ġcontainer Id : ĠInt , ĊĠĠĠ Ġvar arg Ġargs : ĠPair < String , ĠAny ?> ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġreplace Fragment ( container Id , Ġfragment Factory . instantiate < Fragment T >(* args )) ĊĠ Ġ} ĊĊĠ Ġprivate Ġinline Ġfun Ġ< re ified ĠFragment T Ġ: ĠFragment > Ġload Fragment Into ( ĊĠĠĠ Ġ@ Id Res Ġcontainer Id : ĠInt , ĊĠĠĠ Ġbundle : ĠBundle ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġreplace Fragment ( container Id , Ġfragment Factory . instantiate < Fragment T >( bundle )) ĊĠ Ġ} ĊĊĠ Ġprivate Ġinline Ġfun Ġ< re ified ĠFragment T Ġ: ĠFragment > Ġreplace Fragment ( ĊĠĠĠ Ġcontainer Id : ĠInt , ĊĠĠĠ Ġfrag : ĠFragment T ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠ Ġ. replace ( container Id , Ġfrag ) ĊĠĠĠĠĠ Ġ. addTo Back Stack ( name Of < Fragment T >()) ĊĠĠĠĠĠ Ġ. commit () ĊĠ Ġ} Ċ } Ċ