package Ġdev . en ro . example Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġdev . en ro . annotations . Navigation Destination Ċ import Ġdev . en ro . core . Navigation Key Ċ import Ġdev . en ro . core . navigation Handle Ċ import Ġdev . en ro . core . result . close With Result Ċ import Ġdev . en ro . core . result . register For Navigation Result Ċ import Ġdev . en ro . example . databinding . Fragment Request String Binding Ċ import Ġdev . en ro . example . databinding . Fragment Result Example Binding Ċ import Ġdev . en ro . view model . en ro ViewModels Ċ import Ġdev . en ro . view model . navigation Handle Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ Ċ @ Parcel ize Ċ class ĠResult Example Key Ġ: ĠNavigation Key Ċ Ċ @ Suppress Lint (" SetText I 1 8 n ") Ċ @ Navigation Destination ( Result Example Key :: class ) Ċ class ĠRequest Example Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġen ro ViewModels < Request Example ViewModel >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ result _ example , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠFragment Result Example Binding . bind ( view ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . results . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults . text Ġ= Ġit . join ToString ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults . text Ġ= Ġ"( None )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest String Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Request String () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠRequest Example ViewModel () Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnavigation Ġby Ġnavigation Handle < Result Example Key >() ĊĊĠĠĠ Ġprivate Ġval Ġmutable Results Ġ= ĠMutable LiveData < List < String >> (). apply Ġ{ Ġempty List < String >() Ġ} ĊĠĠĠ Ġval Ġresults Ġ= Ġmutable Results Ġas ĠLive Data < List < String >> ĊĊĠĠĠ Ġprivate Ġval Ġrequest String Ġby Ġregister For Navigation Result < String >( navigation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable Results . value Ġ= Ġmutable Results . value . or Empty () Ġ+ Ġit ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Request String () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest String . open ( Request String Key ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Parcel ize Ċ class ĠRequest String Key Ġ: ĠNavigation Key . With Result < String > Ċ Ċ @ Navigation Destination ( Request String Key :: class ) Ċ class ĠRequest String Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnavigation Ġby Ġnavigation Handle < Request String Key >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ request _ string , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠFragment Request String Binding . bind ( view ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Result Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation . close With Result ( input . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }