package Ġdev . en ro . example . mult ist ack Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . set Padding Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġdev . en ro . annotations . Navigation Destination Ċ import Ġdev . en ro . core . Navigation Key Ċ import Ġdev . en ro . core . forward Ċ import Ġdev . en ro . core . navigation Handle Ċ import Ġdev . en ro . example . core . navigation . Multi Stack Key Ċ import Ġdev . en ro . example . mult ist ack . databinding . Mult ist ack Binding Ċ import Ġdev . en ro . mult ist ack . mult ist ack Controller Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ Ċ @ Parcel ize Ċ class ĠMulti Stack Item ( ĊĠĠĠ Ġvar arg Ġval Ġdata : ĠString Ċ ) Ġ: ĠNavigation Key ĊĊ Ċ @ Navigation Destination ( Multi Stack Key :: class ) Ċ class ĠMulti Stack Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnavigation Ġby Ġnavigation Handle < Multi Stack Key > Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer ( R . id . red Frame ) ĊĠĠĠĠĠĠĠ Ġcontainer ( R . id . green Frame ) ĊĠĠĠĠĠĠĠ Ġcontainer ( R . id . blue Frame ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmult ist ack Ġby Ġmult ist ack Controller Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer ( R . id . red Frame , ĠMulti Stack Item (" Red ")) ĊĠĠĠĠĠĠĠ Ġcontainer ( R . id . green Frame , ĠMulti Stack Item (" Green ")) ĊĠĠĠĠĠĠĠ Ġcontainer ( R . id . blue Frame , ĠMulti Stack Item (" Blue ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠMult ist ack Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġred Navigation Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmult ist ack . open Stack ( R . id . red Frame ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgreen Navigation Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmult ist ack . open Stack ( R . id . green Frame ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġblue Navigation Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmult ist ack . open Stack ( R . id . blue Frame ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Navigation Destination ( Multi Stack Item :: class ) Ċ class ĠMulti Stack Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnavigation Ġby Ġnavigation Handle < Multi Stack Item >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLinearLayout ( require Context ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset BackgroundColor ( 0 xFFFFFFFF . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= ĠLinearLayout . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . CENTER ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTextView ( require Context ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġnavigation . key . data . join ToString (" Ġ-> Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Padding ( 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( require Context ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Forward " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Value Ġ= Ġnavigation . key . data . last (). toInt OrNull () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Key Ġ= ĠMulti Stack Item (* navigation . key . data , Ġ( data Value Ġ+ Ġ 1 ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation . forward ( next Key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }