package Ġfr . com if . my com if client Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Network Info Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġcom . google . gson . JsonObject Ċ import Ġfr . com if . my com if client . connexion . Change Password Activity Ċ import Ġfr . com if . my com if client . connexion . Conn exion Activity Ċ import Ġfr . com if . my com if client . database .* Ċ import Ġfr . com if . my com if client . fragment transaction . Transaction Fragment Ċ import Ġfr . com if . my com if client . server handling . HTTP Services Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ Ċ /** Ċ Ġ* ĠMain Ġactivity Ċ Ġ*/ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠHome Fragment . On Fragment Interaction Listener , ĊĠĠĠ ĠTransaction Fragment . On Fragment Interaction Listener Ġ{ ĊĊĠĠĠ Ġ// TODO : Ġuse Ġbasic Ġok HttpClient Ġwhen Ġthe ĠAPI Ġwill Ġbe Ġput Ġin Ġproduction ĊĠĠĠ Ġprivate Ġval Ġretrofit HTTP Services Ġ= ĠHTTP Services . create ( is Safe Conn exion Ġ= ĠIS _ SAFE _ CONN EX ION ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser DAO : ĠUser DAO ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtransaction DAO : ĠTransaction DAO ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġitem DAO : ĠItem DAO ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhome Fragment : ĠHome Fragment ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtransaction Fragment : ĠTransaction Fragment ĊĊĠĠĠ Ġprivate Ġvar Ġadapter Ġ= ĠView Pager Adapter ( support FragmentManager ) ĊĊĠĠĠ Ġprivate Ġvar Ġuser : ĠUser Entity ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġuser DAO Ġ= ĠCom if Database . getApp Database ( this ). getUser DAO () ĊĠĠĠĠĠĠĠ Ġtransaction DAO Ġ= ĠCom if Database . getApp Database ( this ). getTransaction DAO () ĊĠĠĠĠĠĠĠ Ġitem DAO Ġ= ĠCom if Database . getApp Database ( this ). getItem DAO () ĊĊĠĠĠĠĠĠĠ Ġ// If Ġthere Ġis Ġno Ġuser Ġinside Ġthe Ġdatabase , Ġforce Ġthe Ġre connection ĊĠĠĠĠĠĠĠ Ġuser Ġ= Ġthis . user DAO . getFirst () ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ== Ġnull Ġ|| Ġuser !!. token . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogout From Application () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome Fragment Ġ= ĠHome Fragment ( user DAO , Ġretrofit HTTP Services ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Fragment ( user DAO , Ġtransaction DAO , Ġitem DAO , Ġretrofit HTTP Services ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Support ActionBar ( a _ main _ toolbar ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . add Fragment ( home Fragment , Ġresources . getString ( R . string . home )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . add Fragment ( transaction Fragment , Ġresources . getString ( R . string . transactions )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa _ main _ view _ pager . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Creates Ġa Ġlistener Ġthat Ġpermit Ġto Ġknow Ġon Ġwhich Ġpage Ġthe Ġuser Ġis Ġactually ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa _ main _ view _ pager . add On Page ChangeListener ( object Ġ: ĠView Pager . On Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Offset : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Offset Pixels : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Fragment . toggle View Status ( View . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome Fragment . getUser () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( position Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Fragment . get Transactions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Connectivity ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtabs . setup With ViewPager ( a _ main _ view _ pager ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġthe Ġconnectivity Ġof Ġthe Ġuser Ġdevice Ġand Ġdisplay Ġan Ġalert Ġbox Ġif Ġno Ġconn ex ions Ġwere Ġfound ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠContext Ġof Ġthe Ġcalling Ġactivity ĊĠĠĠĠ Ġ* Ġ@ return ĠNone ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck Connectivity ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcm Ġ= Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠ Ġval Ġactive Network : ĠNetwork Info ? Ġ= Ġcm . active Network Info ĊĠĠĠĠĠĠĠ Ġval Ġis Connected : ĠBoolean Ġ= Ġactive Network ?. isConnected Or Connecting Ġ== Ġtrue ĊĠĠĠĠĠĠĠ Ġ// Alert ĠDialog Ġbox ĊĠĠĠĠĠĠĠ Ġval Ġalert Dialog : ĠAlertDialog ? Ġ= Ġthis . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUser Ġclicked ĠOK Ġbutton ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setTitle ( R . string . no _ internet _ connexion ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setMessage ( R . string . offline _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe ĠAlertDialog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert Dialog ?. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles Ġthe Ġmenu ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ logout Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogout From Api () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ information Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠInfo Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . change _ password Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠChange Password Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . startActivity For Result ( intent , ĠCHANGE _ PASSWORD ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStart Ġthe Ġconn exion Ġactivity Ġand Ġclose Ġthe Ġmain Ġactivity ĊĠĠĠĠ Ġ* Ġ@ return ĠNone ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstart Conn exion Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠCon nex ion Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġthis . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġthis . finish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fragment Interaction ( uri : ĠUri ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSends Ġa ĠHTTP Ġrequest Ġto Ġlogout Ġfrom Ġthe ĠAPI Ġ( it Ġinvalid ates Ġthe Ġtoken Ġlinked Ġto Ġthis Ġspecific ĊĠĠĠĠ Ġ* Ġconn exion , Ġand Ġhandle Ġthe Ġresponse Ġfrom Ġthe Ġserver Ġaccording Ġto Ġits ĠHTTP Ġcode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġlogout From Api () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġuser ?. token ĊĠĠĠĠĠĠĠ Ġif Ġ( token Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogout From Application () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit HTTP Services . logout From Api ( build Logout Request ( token )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enqueue ( object Ġ: ĠCallback < ResponseBody > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall : ĠCall < ResponseBody >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResponse < ResponseBody > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( response . raw (). code ()) Ġ{ Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 Ġ-> Ġlogout From Application () Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 0 1 Ġ-> ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . un successful _ logout ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 0 0 Ġ-> ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . invalid _ request ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġprintln (" Error ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < ResponseBody >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" Error : Ġ$ t ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogout From Application () Ġ{ ĊĠĠĠĠĠĠĠ Ġuser DAO . update Token ("") ĊĠĠĠĠĠĠĠ Ġtransaction DAO . nu ke Transaction Table () ĊĠĠĠĠĠĠĠ Ġitem DAO . nu ke Item Table () ĊĠĠĠĠĠĠĠ Ġstart Conn exion Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġthe Ġlogout Ġrequest Ġbody ĊĠĠĠĠ Ġ* Ġ@ param Ġtoken ĠBearer Ġtoken Ġof Ġthe Ġuser Ġ( String ) ĊĠĠĠĠ Ġ* Ġ@ return Ġa ĠJsonObject Ġwhich Ġrepresents Ġan Ġauthenticate Ġrequest Ġbody Ġ( JsonObject ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġbuild Logout Request ( token : ĠString ): ĠJsonObject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġserver Body Ġ= ĠJsonObject () ĊĠĠĠĠĠĠĠ Ġserver Body . addProperty (" token ", Ġtoken ) ĊĠĠĠĠĠĠĠ Ġserver Body . addProperty (" token _ type _ hint ", Ġ" access _ token ") ĊĠĠĠĠĠĠĠ Ġreturn Ġserver Body ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠCHANGE _ PASSWORD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity . RESULT _ OK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogout From Api () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity . RESULT _ C ANCE LED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . op _ cancelled ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . err _ loading _ pwd ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ