package Ġcom . me lb erry . view . on boarding Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . content . Context Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . me lb erry . R Ċ import Ġcom . me lb erry . databinding . Fragment Dis ability Binding Ċ import Ġcom . me lb erry . viewModel . Dis ability ViewModel Ċ Ċ class ĠDis ability Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠDis ability Fragment . On Dis ability Fragment Interaction Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠBug Ġfix Ġof Ġcrash ĊĠĠĠ Ġ// ĠĠĠĠĠ ĠF atal ĠException : Ġjava . lang . IllegalStateException ĊĠĠĠ Ġ// ĠĠĠĠĠ ĠCan Ġnot Ġperform Ġthis Ġaction Ġafter Ġon Save InstanceState ĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ?) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠData Ġbinding ĊĠĠĠĠĠĠĠ Ġval Ġdis ability ViewModel Ġ= ĠDis ability ViewModel ( this . activity ?. application !! ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util . inflate < Fragment Dis ability Binding >( in flater , ĠR . layout . fragment _ dis ability , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBinding Ġconnecting Ġwith ĠViewModel ĊĠĠĠĠĠĠĠ Ġbinding . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . viewModel Ġ= Ġdis ability ViewModel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Lifecycle Owner ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġinfo Ġthat Ġnext ĠButton Ġis Ġpressed , Ġinform Ġan Ġactivity Ġto Ġperform Ġan Ġaction ĊĠĠĠĠĠĠĠ Ġ// Ġt Ġ== Ġ 2 Ġ-> Ġto Ġnot Ġinform Ġduring Ġfirst Ġtime Ġit Ġhappens , Ġin ĠVM Ġthere Ġis Ġchanged Ġ 1 Ġto Ġ 2 Ġto Ġget Ġmake Ġa Ġchange Ġ-> Ġto dot ask Ġin ĠVM ĊĠĠĠĠĠĠĠ Ġdis ability ViewModel . button Pressed . observe ( this , ĠObserver Ġ{ Ġt Ġ-> Ġif Ġ( t Ġ== Ġ 2 ) Ġlistener ?. on Dis ability Fragment Interaction () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠDis ability Fragment . On Dis ability Fragment Interaction Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( context . toString () Ġ+ Ġ" Ġmust Ġimplement ĠOn Dis ability Fragment Interaction Listener ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ Ġlistener Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠInterface Ġto Ġcommunicate Ġwith Ġthe ĠActivity ĊĠĠĠ Ġinterface ĠOn Dis ability Fragment Interaction Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Dis ability Fragment Interaction () ĊĠĠĠ Ġ} Ċ } ĊĊ