package Ġcn . i imedia . jb Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . tele phony . Tele phony Manager Ċ import Ġcn . i imedia . jb . classify . Fragment Class ify Ċ import Ġcn . i imedia . jb . homepage . Fragment Home Ċ import Ġcn . i imedia . jb . http . API Constants Ċ import Ġcn . i imedia . jb . http . Ret rofit Helper Ċ import Ġcn . i imedia . jb . mine . fragment . Fragment Mine Ċ import Ġcom . x ion g . app base . base . Base Activity Ċ import Ġcom . x ion g . app base . http . Request Engine Ċ import Ġcom . x ion g . app base . utils . D Log Ċ import Ġcom . x ion g . app base . utils . EL S Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġv ip . fre nd y . tab layout . entity . Tab Entity Ċ import Ġv ip . fre nd y . tab layout . listener . Custom Tab Entity Ċ import Ġv ip . fre nd y . tab layout . listener . On Tab Select Listener Ċ Ċ class ĠMainActivity Ġ: ĠBase Activity () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Fragments : ĠArrayList < Fragment > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĠĠĠ Ġprivate Ġval Ġm Activity Ġ= Ġthis ĊĊĠĠĠ Ġ// ĠĠĠ Ġprivate Ġval Ġm Titles : ĠArrayList < String > Ġ= Ġarray ListOf (" é¦ĸé¡µ ", Ġ" åĪĨç±» ", Ġ" èµĦ è®¯ ", Ġ" æĪĳçļĦ ") ĊĠĠĠ Ġprivate Ġval Ġm Titles : ĠArrayList < String > Ġ= Ġarray ListOf (" é¦ĸé¡µ ", Ġ" åĪĨç±» ", Ġ" æĪĳçļĦ ") ĊĠĠĠ Ġ// ĠĠĠ Ġprivate Ġval Ġm Icon Un select Ids Ġ= Ġint ArrayOf ( R . mip map . label _ home , ĠR . mip map . label _ class , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . label _ information , ĠR . mip map . label _ personal ) ĊĠĠĠ Ġprivate Ġval Ġm Icon Un select Ids Ġ= Ġint ArrayOf ( R . mip map . label _ home , ĠR . mip map . label _ class , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . label _ personal ) ĊĠĠĠ Ġ// ĠĠĠ Ġprivate Ġval Ġm Icon Select Ids Ġ= Ġint ArrayOf ( R . mip map . label _ home _ pre , ĠR . mip map . label _ class _ pre , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . label _ information _ pre , ĠR . mip map . label _ personal _ pre ) ĊĠĠĠ Ġprivate Ġval Ġm Icon Select Ids Ġ= Ġint ArrayOf ( R . mip map . label _ home _ pre , ĠR . mip map . label _ class _ pre , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . mip map . label _ personal _ pre ) ĊĠĠĠ Ġprivate Ġval Ġm Tab Entities Ġ= ĠArrayList < Custom Tab Entity >() ĊĠĠĠ Ġvar Ġels : ĠE LS Ġ= ĠE LS . getInstance () ĊĠĠĠ Ġval Ġapi : ĠAPI Constants Ġ= ĠRequest Engine . create Service ( API Constants :: class . java ) ĊĠĠĠ Ġvar Ġtm : ĠTele phony Manager ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġfragment Home : ĠFragment Home ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcurrent Tab Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval ĠTAB _ POSITION Ġ= Ġ" tab _ position " ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id (): ĠInt Ġ= ĠR . layout . activity _ main ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State ?. put Int ( TAB _ POSITION , Ġcurrent Tab ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġtm Ġ= Ġget System Service ( Context . TELE PHONY _ SERVICE ) Ġas ĠTele phony Manager ĊĊĠĠĠĠĠĠĠ Ġfragment Home Ġ= ĠFragment Home . getInstance () ĊĠĠĠĠĠĠĠ Ġm Fragments . add ( fragment Home Ġas ĠFragment Home ) ĊĠĠĠĠĠĠĠ Ġm Fragments . add ( Fragment Class ify . getInstance ()) Ċ // ĠĠĠĠĠĠĠ Ġm Fragments . add ( Fragment Information . getInstance ()) ĊĠĠĠĠĠĠĠ Ġm Fragments . add ( Fragment Mine . getInstance ()) ĊĊĠĠĠĠĠĠĠ Ġ// éħįç½® åºķ éĥ¨ å¯¼èĪª æłı ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġm Titles . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Tab Entities . add ( Tab Entity ( m Titles [ i ], Ġm Icon Select Ids [ i ], Ġm Icon Un select Ids [ i ])) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbottom _ tab . set Tab Data ( m Tab Entities , Ġthis , ĠR . id . container , Ġm Fragments ) ĊĠĠĠĠĠĠĠ Ġbottom _ tab . setOn Tab Select Listener ( object Ġ: ĠOn Tab Select Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Select ( current : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD Log . w ( TAG , Ġ" çĤ¹åĩ» äºĨ Tab :" Ġ+ Ġcurrent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġbottom _ tab . last Tab ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fragments [ current ]. user Visible Hint Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fragments [ last ]. user Visible Hint Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tab Ġ= Ġcurrent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Re select ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĨį æ¬¡ çĤ¹åĩ» ä¸» é¡µ æĹ¶ å¼º åĪ¶ åĪ·æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Home ?. tab Refresh () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD Log . w ( TAG , Ġ" on Tab Re select :" Ġ+ Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom _ tab . current Tab Ġ= ĠsavedInstanceState . getInt ( TAB _ POSITION ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// çĶ³è¯· èİ·åıĸ ime i çļĦ æĿĥéĻĲ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( m Activity , ĠManifest . permission . READ _ PHONE _ STATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( m Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Manifest . permission . READ _ PHONE _ STATE ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget I me i () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget I me i () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( els . get Bool Data ( EL S . USER _ ON LAND ) Ġ|| Ġels . get Bool Data ( EL S . USER _ ON LAND _ TH IRD )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit Helper ( m Activity ). init Collect Database () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget I me i () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠ Ġprivate Ġfun Ġget I me i () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġels . save String Data ( EL S . IME I , Ġtm ?. ime i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġels . save String Data ( EL S . IME I , Ġtm ?. deviceId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// æĮī ä¸¤ æ¬¡ éĢĢåĩº ç¨ĭåºı ĊĠĠĠ Ġprivate Ġvar Ġclick Tw ice Flag Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed Support () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( click Tw ice Flag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed Support () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm App . finish Application () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Tw ice Flag Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast (" å¿«éĢŁ æĮī ä¸¤ æ¬¡ éĢĢåĩº ç¨ĭåºı ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ Ġclick Tw ice Flag Ġ= Ġfalse Ġ}, Ġ 2 0 0 0 ) ĊĠĠĠ Ġ} Ċ } Ċ