package Ġindi . y ume . tools . y route . sample . fragment manager Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġindi . y ume . tools . y route .* Ċ import Ġindi . y ume . tools . y route . datatype .* Ċ import Ġindi . y ume . tools . y route . fragment manager . Base Manager Fragment Ċ import Ġindi . y ume . tools . y route . sample . App Ċ import Ġindi . y ume . tools . y route . sample . R Ċ import Ġio . reactivex . subjects . Subject Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Main Scope Ċ import Ġkotlinx . coroutines . cancel Ċ import Ġkotlinx . coroutines . launch Ċ Ċ abstract Ġclass ĠBase Fragment Ġ: ĠBase Manager Fragment < Base Fragment >(), ĠCor outine Scope Ġby ĠMain Scope () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġcore : ĠCore Engine < Activities State > Ġby Ġlazy Ġ{ Ġ( activity !!. application Ġas ĠApp ). core Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġcancel () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠFragment Page 1 Ġ: ĠBase Fragment () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġbind Fragment Life () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĠLogger . d (" Fragment Page 1 ", Ġit . toString ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. catch Subscribe () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ ĠLogger . d (" Fragment Page 1 ", Ġ" onCreate View ") ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ 1 , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġview . findViewById < Button >( R . id . jump _ other _ for _ result _ btn ). setOnClickListener Ġ{ Ġthis @ Fragment Page 1 . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstart Fragment For Rx ( Fragment Builder ( Fragment Other :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Param ( Other Param (" This Ġis Ġparam Ġfrom ĠFragment Page 1 . "))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y Result Ġfrom ĠOther Ġfragment : Ġ\ n result Code =${ result ?. a }, Ġdata =${ result ?. b ?. getString (" msg ") }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} Ġ} ĊĊĠĠĠĠĠĠĠ Ġview . findViewById < View >( R . id . jump _ other _ with _ shared _ view _ btn ). setOnClickListener Ġ{ Ġthis @ Fragment Page 1 . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStack Route . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder : ĠFragment Builder < Base Fragment > Ġ= ĠFragment Builder ( Fragment Other :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Param ( Other Param (" This Ġis Ġparam Ġfrom ĠFragment Page 1 .")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart With Shared ( builder , Ġview . findViewById ( R . id . page _ 1 _ search _ edit )) Ġrun At F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Fragment Page 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start Lazy ( core ). flatten For Y Route (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Shared ĠFragment Page 1 : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠFragment Page 2 Ġ: ĠBase Fragment () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ ĠLogger . d (" Fragment Page 2 ", Ġ" onCreate View ") ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ 2 , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠFragment Page 3 Ġ: ĠBase Fragment () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ ĠLogger . d (" Fragment Page 3 ", Ġ" onCreate View ") ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ 3 , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ class ĠFragment Other Ġ: ĠBase Fragment (), ĠFragment Param < Other Param > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġinjector : ĠSubject < Other Param > Ġ= ĠFragment Param . default Inject er () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ other , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( R . id . other _ message ). text Ġ= Ġ" page Ġhash : Ġ${ hashCode () }" ĊĊĠĠĠĠĠĠĠ Ġview . findViewById < Button >( R . id . jump _ with _ anim _ btn ). setOnClickListener Ġlistener @{ Ġ Ġthis @ Fragment Other . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Fragment ( Fragment Builder ( Fragment Other :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Anim Data ( Anim Data ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Param ( Other Param (" This Ġis Ġparam Ġfrom ĠFragment Page 1 . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Start ĠAnim ĠFragment Other : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġinjector . subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġit . toString (), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Result ( 9 9 9 , Ġbundle Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" msg " Ġto Ġ" This Ġis Ġresult Ġfrom ĠFragment Other ." ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠOther Param ( val Ġmessage : ĠString )