package Ġme . sh ou h eng . sample . view Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . os . Bundle Ċ import Ġcom . alibaba . android . ar outer . launcher . AR outer Ċ import Ġme . sh ou h eng . api . bean . User Ċ import Ġme . sh ou h eng . sample . R Ċ import Ġme . sh ou h eng . sample . databinding . Fragment Main Binding Ċ import Ġme . sh ou h eng . sample . event . Simple Event Ċ import Ġme . sh ou h eng . sample . vm . Shared ViewModel Ċ import Ġme . sh ou h eng . utils . app . Activity Utils Ċ import Ġme . sh ou h eng . utils . app . Res Utils Ċ import Ġme . sh ou h eng . utils . constant . Activity Direction Ċ import Ġme . sh ou h eng . utils . data . StringUtils Ċ import Ġme . sh ou h eng . utils . st ability . L Ċ import Ġme . sh ou h eng . utils . store . Path Utils Ċ import Ġme . sh ou h eng . vm lib . anno . Fragment Configuration Ċ import Ġme . sh ou h eng . vm lib . base . Common Fragment Ċ import Ġme . sh ou h eng . vm lib . bean . Status Ċ import Ġme . sh ou h eng . vm lib . com n . Container Activity Ċ import Ġme . sh ou h eng . vm lib . network . download . Download Listener Ċ import Ġme . sh ou h eng . vm lib . network . download . Downloader Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* Ġ ä¸» çķĮéĿ¢ æĺ¾ç¤º çļĦ ç¢ İ çīĩ Ċ Ġ* Ċ Ġ* Ġ@ author ĠW ng Sh h ng Ġ 2 0 1 9 - 6 - 2 9 Ċ Ġ*/ Ċ @ Fragment Configuration ( share ViewModel Ġ= Ġtrue , Ġuse EventBus Ġ= Ġtrue ) Ċ class ĠMain Fragment Ġ: ĠCommon Fragment < Shared ViewModel , ĠFragment Main Binding >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdownload Url Ġ= Ġ" https :// images . unsplash . com / photo - 1 5 0 1 8 7 9 7 7 9 1 7 9 - 4 5 7 6 bae 7 1 d 8 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" d ? ix lib = rb - 1 . 2 . 1 & q = 8 0 & fm = jpg & crop = entropy & cs = tin ys rgb & dl = vl ad im ir - ri ab inin - di MB LU 4 Fz DQ - unsplash . jpg " ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Res Id (): ĠInt Ġ= ĠR . layout . fragment _ main ĊĊĠĠĠ Ġoverride Ġfun Ġdo Create View ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Subscriptions () ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠĠĠĠĠ Ġvm . share Value Ġ= ĠRes Utils . getString ( R . string . sample _ main _ shared _ value _ between _ fragments ) ĊĠĠĠĠĠĠĠ ĠL . d ( vm ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Subscriptions () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ çĶ¨æĪ· æ¶Īæģ¯ ĊĠĠĠĠĠĠĠ Ġvm . get Observable ( User :: class . java ). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it !!. status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ Ġtoast ( StringUtils . format ( R . string . sample _ main _ got _ user , Ġit . data )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . FAILED Ġ-> Ġ{ Ġtoast ( it . message ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{/* Ġdo Ġnothing Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{/* Ġdo Ġnothing Ġ*/ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ================= =========== Ġæµ ĭ è¯ķ ĠVM ĠçļĦ Ġget Observable Ġ ç³»åĪĹ æĸ¹æ³ķ Ġ================= =========== ĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ ï¼ļ String + Flag # 0 x 0 0 0 1 ï¼Į æĮĩå®ļ äºĨ Ġsingle = true ï¼Į ä¸¤ä¸ª æ³¨åĨĮ åıªæľī ä¸Ģä¸ª èĥ½ æĶ¶ åĪ° ĊĠĠĠĠĠĠĠ Ġvm . get Observable ( String :: class . java , ĠFLAG _ 1 , Ġtrue ). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ("# 1 . 1 : Ġ" Ġ+ Ġit !!. data ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL . d ("# 1 . 1 : Ġ" Ġ+ Ġit . data ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġvm . get Observable ( String :: class . java , ĠFLAG _ 1 , Ġtrue ). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ("# 1 . 2 : Ġ" Ġ+ Ġit !!. data ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL . d ("# 1 . 2 : Ġ" Ġ+ Ġit . data ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ ï¼ļ String + Flag # 0 x 0 0 0 2 ï¼Į é»ĺè®¤ Ġsingle = true ï¼Į ä¸¤ä¸ª æ³¨åĨĮ éĥ½ èĥ½ æĶ¶ åĪ° æ¶Īæģ¯ ĊĠĠĠĠĠĠĠ Ġvm . get Observable ( String :: class . java , ĠFLAG _ 2 ). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ("# 2 . 1 : Ġ${ it !!. data }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL . d ("# 2 . 1 : Ġ" Ġ+ Ġit . data ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġvm . get Observable ( String :: class . java , ĠFLAG _ 2 ). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ("# 2 . 2 : Ġ${ it !!. data }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL . d ("# 2 . 2 : Ġ" Ġ+ Ġit . data ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ ï¼ļ List < String > + Flag # 0 x 0 0 0 1 ĊĠĠĠĠĠĠĠ Ġvm . getList Observable ( String :: class . java , ĠFLAG _ 1 ). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" L # 1 : Ġ${ it !!. data }") ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ ï¼ļ List < String > + Flag # 0 x 0 0 0 2 ĊĠĠĠĠĠĠĠ Ġvm . getList Observable ( String :: class . java , ĠFLAG _ 2 ). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" L # 2 : Ġ${ it !!. data }") ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . btn To Second . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠSecond Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. support FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . addTo Back Stack (" Second ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . replace ( R . id . fragment _ container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Observable . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæµ ĭ è¯ķ åıĳéĢģ ĠString + Flag Ġ ç±»åŀĭçļĦ æ¶Īæģ¯ ï¼Į æŃ£ç¡® æĶ¶ åıĳ åĪĻ æµĭè¯ķ éĢļè¿ĩ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . tag Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . tag Ġ= Ġ" SS S " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm . test Observable Flag ( FLAG _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . tag Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm . test Observable Flag ( FLAG _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Observable List . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæµ ĭ è¯ķ åıĳéĢģ ĠList + Flag Ġ ç±»åŀĭçļĦ æ¶Īæģ¯ ï¼Į æŃ£ç¡® æĶ¶ åıĳ åĪĻ æµĭè¯ķ éĢļè¿ĩ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . tag Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . tag Ġ= Ġ" SS S " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm . test Observable List Flag ( FLAG _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . tag Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm . test Observable List Flag ( FLAG _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Request User . setOnClickListener Ġ{ Ġvm . request UserData () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn To Component B . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA Router . getInstance (). build ("/ eye pet izer / main "). navigation () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Utils . override Pending Transition ( activity !! , ĠActivity Direction . ANIM ATE _ SL IDE _ TOP _ FROM _ BOTTOM ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn To Sample . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContainer Activity . open ( Sample Fragment :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( Sample Fragment . ARGS _ KEY _ TEXT , ĠRes Utils . getString ( R . string . sample _ main _ argument _ to _ fragment )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch ( context !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Download . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDown loader . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Only Wifi ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. download ( download Url , ĠPath Utils . get External Storage Path (), Ġobject Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDownload Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( errorCode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Download Ġ: Ġerror Ġ$ errorCode ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Download Ġ: Ġstart ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress ( read Length : ĠLong , Ġcontent Length : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . d (" Download Ġ: Ġon Progress Ġ$ read Length /$ content Length ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete ( file : ĠFile ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Download Ġ: Ġcomplete Ġ: Ġ${ file ?. absolute File }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Utils . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Utils . start ( context !! , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Pref . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContainer Activity . open Fragment ( Sample Preference :: class . java ). launch ( context !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Crash . setOnClickListener Ġ{ Ġ 1 / 0 Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Vm Post . setOnClickListener Ġ{ Ġvm . postMessage () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ĊĠĠĠ Ġfun Ġon Get Message ( simple Event : ĠSimple Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoast ( StringUtils . format ( R . string . sample _ main _ activity _ received _ msg , Ġjava Class . simple Name , Ġsimple Event . msg )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFLAG _ 1 : Int Ġ= Ġ 0 x 0 0 0 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFLAG _ 2 : Int Ġ= Ġ 0 x 0 0 0 2 ĊĠĠĠ Ġ} Ċ }