package Ġcom . ack ee . android _ mvp _ plugin Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġcom . ack ee . android _ mvp _ plugin . Constants . VIEW _ STATE _ KEY Ċ import Ġcom . ack ee . mvp . library . M vp View Ċ import Ġcom . ack ee . mvp . library . Presenter Ċ import Ġcom . ack ee . mvp . library . Presenter Creator Ċ import Ġcom . trello . nav i 2 . Event Ċ import Ġcom . trello . nav i 2 . component . support . Nav i Fragment Ċ import Ġcom . trello . nav i 2 . rx . Rx Nav i Ċ import Ġcom . trello . rx lifecycle 2 . kotlin . bind To Lifecycle Ċ import Ġcom . trello . rx lifecycle 2 . nav i . Nav i Lifecycle Ċ Ċ /** Ċ Ġ* ĠNav i Ġextension Ġto Ġwhich Ġall Ġthe ĠM VP Ġlogic Ġis Ġdeleg ated Ġfrom Ġactivity . Ċ Ġ* Ċ Ġ* Ġ@ param Ġfragment Ġshould Ġimplement Ġthe ĠM VP Ġview Ġwith Ġthe Ġsame Ġtype Ġas Ġ[ V ] Ġgeneric Ġtype Ġas Ġwell Ġas Ċ Ġ* Ġ[ Presenter Creator ] Ġwith Ġ[ P ] Ġgeneric Ġtype Ġand Ġ[ Nav i Fragment ] Ċ Ġ* Ċ Ġ* Ġ@ author ĠGe org iy ĠSh ur Ġ( ge org iy . sh ur @ ack ee . cz ) Ċ Ġ* Ġ@ since Ġ 4 / 1 8 / 2 0 1 7 Ċ Ġ*/ Ċ class ĠM vp Fragment Extension < V Ġ: ĠM vp View , ĠF , ĠP Ġ: ĠPres enter < V , ĠT >, ĠT Ġ: ĠParcel able >( fragment : ĠF ) Ġwhere ĠF Ġ: ĠPres enter Creator < P , ĠT >, ĠF Ġ: ĠNav i Fragment , ĠF Ġ: ĠM vp View Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠP ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlifecycle Provider Ġ= ĠNav i Lifecycle . create Fragment Lifecycle Provider ( fragment ) ĊĠĠĠĠĠĠĠ ĠRx Nav i . observe ( fragment , ĠEvent . CREATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle ( lifecycle Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġpresenter Ġ= Ġfragment . create Presenter ( it . get Parcelable ( VIEW _ STATE _ KEY )) Ġ}, Ġ{ Ġit . printStackTrace () Ġ}) ĊĊĠĠĠĠĠĠĠ ĠRx Nav i . observe ( fragment , ĠEvent . SAVE _ INSTANCE _ STATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle ( lifecycle Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview State Ġ= Ġpresenter . state To Save () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view State Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . put Parcelable ( VIEW _ STATE _ KEY , Ġview State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġit . printStackTrace () Ġ}) ĊĊĠĠĠĠĠĠĠ ĠRx Nav i . observe ( fragment , ĠEvent . RE SU ME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle ( lifecycle Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġpresenter . attach View ( fragment Ġas ĠV ) Ġ}, Ġ{ Ġit . printStackTrace () Ġ}) ĊĊĠĠĠĠĠĠĠ ĠRx Nav i . observe ( fragment , ĠEvent . PAUSE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle ( lifecycle Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġpresenter . detach View () Ġ}, Ġ{ Ġit . printStackTrace () Ġ}) ĊĊĠĠĠĠĠĠĠ ĠRx Nav i . observe ( fragment , ĠEvent . DESTROY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Lifecycle ( lifecycle Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġpresenter . on Destroy () Ġ}, Ġ{ Ġit . printStackTrace () Ġ}) ĊĠĠĠ Ġ} Ċ }