




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
多個(gè)Activity之間的相占訓(xùn)用: ▲新建一個(gè)繼承Aclivily的類,在功能訃“丫〔AndroidManifcst.xml文件中添加進(jìn)上面Activity配糧代碼,打開新的Activity:startActiviiy(newIntent(MainAclivity.lhi$,NewActivity.class));打開新的Activity,并傳遞若干個(gè)參數(shù)給它:Intentintent=newIntcnt(MainActivi(y.lhis.NcwAclivity.class)Bundlebundle=newBundle()〃該類用作攜帶數(shù)據(jù)bundle.pu(S(ring(NnameN>w傳智播務(wù)”);bundlc.pu(Int(MagcN94);intcnt.putEx(ras(bundlc)y/附帶上額外的數(shù)據(jù)startActivity(inlcnt);在另個(gè)Activity里面接收參數(shù):Bundlebundle=this.ge(ln(ent_r().getExtras_r();Siringname=bundle?gclString_r(,,namc,*);iniage=bundle.gclInl_rC'age");Bundle類用作攜帶數(shù)據(jù),它類fclTMap.用丁?存放kcy-valuc名俏對(duì)形式的俏。相對(duì)丁Map,它捉供了*種常用類那的putXxx(ygetXxxjO方法?<UI:putString(ygetString_r()和pullnt()/getlnt_r()>putXxx()用丁往Bundle對(duì)象放入數(shù)據(jù).getXxx_r()7/法用「?從Bundle對(duì)彖里獲取數(shù)據(jù)。Bundle的內(nèi)部實(shí)際1:是使用了HashMap類型的變吊來存放putXxxO方法放入的(ft:請(qǐng)求碼的作用:使用startActivityForRcsuh(Intcntintent,intrcqucstCodc)方法打開新的Activity?我們石農(nóng)為M;ulAc(ivityloiRcMiK0/nA傳入?個(gè)請(qǐng)求嗎(第個(gè)參數(shù))?詵求碼的俏定根摳業(yè)務(wù)IIL1設(shè)応.用H小識(shí)請(qǐng)求例如:一個(gè)Activity兩個(gè)按鈕?點(diǎn)兒這兩個(gè)按刨祁會(huì)打開同一個(gè)Activity.不聳是那個(gè)按祕打開新Activity*、氣這個(gè)新Activity關(guān)閉石,系統(tǒng)都會(huì)調(diào)用前面Activity的onActiviiyResult(intrcqucstCodc.in(rauhCodc.Intentdata)方法。石onActivityRcsultOA法如果需耍知道新Activity是曲那個(gè)按鍛打開的,M且嗖做山相應(yīng)的業(yè)務(wù)處理。結(jié)果碼的作用:O在_個(gè)Activity中?可能會(huì)使用startAclivilyForResullO方法打開多個(gè)不同的Activity處理不同的業(yè)務(wù).'*1這些新Aclivily關(guān)石系統(tǒng)都會(huì)調(diào)用前而Activity的onActiviivRcsul((intActivity跳轉(zhuǎn)打傳值,主要是通過Intent類來連接女個(gè)Activity.以及傳遞數(shù)抑;。Imcm是Android-個(gè)很匝要的類。Inlcnl直詳是?億圖S什么是總圖呢?比如你想從這個(gè)Activity跳轉(zhuǎn)到另外一個(gè)Activity,這就是一個(gè)意圖。Inwni類在Android系統(tǒng)中的作用很大,在此不詳細(xì)說了.后而有文章介紹!Activity跳轉(zhuǎn),無返冋結(jié)果5757這是般簡申?的Activity跳轉(zhuǎn)方式。從一個(gè)Activity啟動(dòng)另-個(gè)Activity,宜接startActivity(nevvInicnl(當(dāng)前Activity.this,下一Aclivily.class))。((Button)findViewByld(R?id?Notepadvl))?setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){startActivity(newIntent(MyAndroidAppActivity?this,Notepadvl?class));}));OActivity跳轉(zhuǎn),返冋數(shù)據(jù)/結(jié)果需要返回?cái)?shù)據(jù)或結(jié)果的,則使用startActivityForResult(Intentintent,intrcquestCode)?rcquestCode的值是口定義的,用于識(shí)別跳轉(zhuǎn)陥H標(biāo)Aclivily。跳轉(zhuǎn)的H標(biāo)Activity所耍做的就是返冋數(shù)據(jù)/結(jié)果,setResult(intresultCode)只返I川結(jié)果不帶數(shù)據(jù),或者sctResult(in(resultCode,Intentda(a)兩者都返回!而接收返回的數(shù)據(jù)/結(jié)果的處理函數(shù)是onActivityResult(inircquestCode,intresultCode,Intentdata),這屮.的rcquestCode就是startActivityForResult的rcquestCode,resultCode就是setResult里面的resultCode?返回的數(shù)據(jù)在data里面。MyAndroidAppActivity:staticfinalintSEND_SMS_REQUEST=0;staticfinalintCALL.REQUEST=1;8((Button)findViewByld(R?id?sms))?setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){Intentintent=newIntent(MyAndroidAppActivity.this,SendSMSActivity?class);startActivityForResult(intent,SEND_SMS_REQUEST);TOC\o"1-5"\h\z)});15@OverrideprotectedvoidonActivityResult(intrequestCcde,intresultCode,Intentdata){ 巴if(requestcode―SEND_SMS_REQUEST){if(resultCode==RESULT_OK)(Toast.makeText(this,"SendSMSRESULT_OK?,Toast?LENGTH.SHORT)?show();2! }elseif(resultCode==RESULT^CANCELED){Bundlebundle=data.getExtras();Stringphoneno=bundle?getString(phoneNO11);Toast.makeText(this,"SendSMSRESULT_CANCELEDR+phonenorToast?LENGTH_SHORT)?show();}}else if(requestcode—CALL_REQUEST)(if (resultCode==RESULT.CANCELED) {
:SULT_CANCELED".Toas^?makeText(this.Toast?LENGTH.SHORT)?:SULT_CANCELED".TOC\o"1-5"\h\z}}}SendSMSActivity:((Button)findViewByld(R?id.send))?setOnClickListener(newButton?OnClickListener() {333433343536SendSMSActivity?this?setResuIt(RESUL7_OK);SendSMSActivity?this?finish();37}):卄注意,在setResult后,察調(diào)用finish。銷毀當(dāng)前的Activity,否則無法返回到原來的Activity>就無法執(zhí)行原來Activity的onActivityResult函數(shù).看到當(dāng)前的Activity沒反應(yīng)。RESULT_OK和RESULT_CANCELED是系統(tǒng)空間電面的常量,不需要門宦義,H接使用就行。另外在運(yùn)行過用中,發(fā)現(xiàn)按Back鍵后,是町以返冋RESULT.CANCELED的,看了SDKdocAL原來真的是那樣,而口不帶有數(shù)據(jù)的。這意味著,如果你設(shè)想在返冋RESULT.CANCELED時(shí)并返冋數(shù)據(jù),那么需要截獲Back從的帝件處理,把原來返何RESULT.CANCELED的核心邏輯copy到爭件處理里面。這里給個(gè)例了?:38 ((Button)findViewByld(R?id?cancel))?setOnClickListener(newButton?0nClickListener(){publicvoidonClick(Viewv){//實(shí)例化Bundle,設(shè)進(jìn)儘耍傳遞的參數(shù)Bundlebundle=newBundle();bundle?putString(nphoneNO"zM020-123R);}));48@0verridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){//是否觸發(fā)按鍵為back鍵if(keyCode==KeyEvent.KEYCODE_BACK){53//實(shí)例化Bundle,設(shè)匙需耍傳遞的參數(shù)55565556bundle.putString(nphoneNOw,w020-123w;setResult(RESULT_CANCELED, this.gQtTntQnt()?putExtras(bundle));this.finish();returntrue;}else{returnsuper?onKeyDown(keyCode, event);}}這里耍注意的是,在處理Back健爭件后rclumtrue則表不本爭件不再傳遞給其他函數(shù)處理,可理解為由當(dāng)前函數(shù)全權(quán)負(fù)責(zé)處理,所以在returnWfinish前Aclivily,保持原來的行為表現(xiàn),當(dāng)然我們可以設(shè)置為隱藏為前Activity等其他行為。Activity傳送數(shù)鋸在上面的代碼屮,我們可以看到使用Bundle來存儲(chǔ)數(shù)據(jù),獰f兀putExtras到IntentM面。Bundle使用?叱字?優(yōu)'來存儲(chǔ)數(shù)據(jù)。另外注意一下,seiResulBi要用到InierH參數(shù)時(shí),如何獲取原來的Inienl的!Android開發(fā)筆記一Activity間互相傳值內(nèi)容說明:在頁面之間互相傳值資料來源:Android南部工作坊在Android的應(yīng)用程式裡,會(huì)冇?個(gè)Bundle的物件,它就像是用來儲(chǔ)存全域變數(shù)的?個(gè)地方,我們的程式在onCreate的時(shí)候就會(huì)看到裡面含右傅入的金數(shù)BundlesavedlnstanceStateo首先參考「轉(zhuǎn)換頁血」一文,建立新的頁面,並H將最後-段呼叫頁面的程式碼改成下面的程式,增加Bundle豔數(shù)傳遞資料,亞且婆求回傳值。Intentintent=newIntentO;26intent.setClass(main.thiszpage2.class);//護(hù)定傅送冬數(shù)29;()Bundlebundle=newBundle();bundle.putString("namel\"valuel");intent.putExtras(bundle);〃總冬浪放入intentstartActivityForResult(intent,)); 〃呼凹page2喬要求冋f"值來到page2,在onCreate方法中,可以使用下面程式碼來取得參數(shù):Intentintent=this.getlntentO; ?Bundlebundle=intent.getExtras();〃取心Bundletxt_hello.setText(bundle.getString(*namel")); Bundle內(nèi)容如果要在pagc2加入回傅值,一樣使用putString加入。此時(shí)在Bundle中存在name]和namc2<>bundle.putStringCname2\*value2");3intent.putExtras(bundle); 〃將name2放入Bundlepage2.this.setResult(Activity.RESULT_0K/intent);〃冋軟RESULT_OK1717page2.this.finish0;〃內(nèi)閉Activity冋到main匸頁而,參考謚取QRCode,增加onAclivilyRcsull方法.在裡而加入卜?而程式碼來取得回傳值:(?Override38protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){//TODOAuto-generatedmethodstub Qsuper.onActivityResult(requestCodezresultCode,data);4345 if(requestCode==0&&resultCode==Activity.RE5ULT_OK){Bundlebundle=data.getExtras();txt_hello.setText(bundle.getStringCname2w));}}Activity瞬與傳值?個(gè)Android應(yīng)用程序很少會(huì)只彳J?一個(gè)Activity對(duì)彖,如何在多個(gè)ActivityZ間進(jìn)行跳轉(zhuǎn),而且能夠互相傳值是一個(gè)很基本的耍求。在前面創(chuàng)建的MyApp中,我們通過點(diǎn)擊按鈕可以更新當(dāng)前界面上的文本內(nèi)容?,F(xiàn)衣我們想換種方式,在點(diǎn)擊按鈕后,顯示一個(gè)新的屏幕,在這個(gè)辟幕上輸入一段話,然后再返冋到原先的界面顯示剛才輸入的那句話。首先我們新建這個(gè)新加幕的布局文件input.xmL并添加-個(gè)文木輸入框和-?個(gè)按鈕(注意,xml元素的命名不要和H?他布局文件中的定義重名,I対為所冇的逾源都在R中進(jìn)行索引,比如id.如果重名了在使/IJR.id.*的時(shí)候就會(huì)有問題了).這個(gè)如局文件對(duì)應(yīng)的是-?個(gè)Activity,因此我們再新建一個(gè)I叩ul類(繼承QActivity)用于顯示這個(gè)布局并響應(yīng)事件。9publicel&JtInputextendsActivityLl? 8Overrl.deprotectedvoidonCreate(BundledavedXnstanceState)<super ?onCreate(savedlnstanceStace);serConcenzView(R?layout?xnpuc);_>F>然后,還冇一個(gè)垂要的工作,那就是在淸單文件AndroidManifest.xml中告訴程序,我定文了個(gè)新的Activity,你可以去調(diào)用它。<3A&1£xals?:://?uhcaa*?,d?cco/apk?=aadxeid*??cdroidoppliea^iocandroid:&&dxoid:lab?L?*9?txi&9/aHS.<B4ro&4in<m*???Hr?皿 a6 <ince&c<aetionafidroid:sane?aaMroid?l&tent??etion.KMSt"/><eat?9ory?£dreid:id.latest.category./></intent<>GClTlCyandroidxnaae-*X3</epplic?tioe>我們希望在以前的那個(gè)匸界面上點(diǎn)擊按鈕以麻町以跳轉(zhuǎn)到文本輸入界面,所以我們需要對(duì)按鈕的onClick事件進(jìn)行定義:I戶 ?OverrideXpobl&evoia (Bundle )?op?r?csCx?at<O?v*dl匕二:MtCcBX<atVi?w(ft :
bucconSlevXDrut■(But-con)this?bucconSlevXDrut■(But-con)this?“ntfVAevByXd(R?ld?buC3nX?vXnpvr》;batccnXevXeput?vecODClickLiscener(newView.OoClxu■乙丄(》<pobliovoidonCliekfViwview)Xnt?ntlntMt.-warXnteac(MyAppXe^>€▼?t<xtActivity*rorResult(latent*0):>>);21132$If28在這段代碼里出現(xiàn)了一些新東四。首先是Intent,它是Android—個(gè)很重要的類.Intent逍譯是?噫圖S什么是意圖呢?比如你想從這個(gè)Activity跳轉(zhuǎn)到另外一個(gè)Activity,這就是一個(gè)意圖。它不但可以連接多個(gè)Activity,還可以在它們Z間傳遞數(shù)據(jù)。在這里,我們就是用Intent從MyApp対象跳轉(zhuǎn)到了I叩UI對(duì)象。再看緊跟著的startActivityForResultO方法?顧名思義,它可以從—?個(gè)定義好的Intent對(duì)象啟動(dòng)個(gè)新的Activity,并1L這個(gè)Activity會(huì)返冋?qǐng)?zhí)行的結(jié)果,這些內(nèi)容下而馬上就會(huì)提到。Activity跳轉(zhuǎn)與傳值好,這里我們己經(jīng)可以調(diào)出新Activity了,我們看-下執(zhí)行的結(jié)果:2223liif32333435342223liif3233343534editTex?Input?(Edit:TeMC)fi&dVievSyXd(R.^d.3匕片2匕二9::=,butto&XsputCk■(Butcoft)thi?.fI2^vi?w9yld(R?,d?buttoaXaputOt?x二teCL'ckLyxsxGMwy、?v?(><pttblievoidoftCliek(Vitvview)(Stringtext■ (>ShaxedFr?fes?ac*? ter?ww■pecSSiare4Fr?r?r?wce■廣0>ShexcdPreferesce■?Editoredxter?p??ferrsc?*editor text): ?if(editor.cossitOI<MtReaulc(Activity.ASXVrr^amt>finishOj?>>;這里的關(guān)鍵是SharedPreferences對(duì)象,這是在多個(gè)Activity(同-?包中)共亨數(shù)據(jù)的方式,本質(zhì)上它就是一個(gè)可以在包的范圍內(nèi)進(jìn)行數(shù)據(jù)共享的文件。我們通過一個(gè)標(biāo)簽"TcxU獲得了和文本相關(guān)的那個(gè)S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 冷汽鞋企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 二零二五年度住宅物業(yè)費(fèi)代收代繳服務(wù)合同
- 高嶺土伴生礦綜合利用和深加工企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 二零二五學(xué)校二零二五年度食品安全與營養(yǎng)健康促進(jìn)協(xié)議
- 2025年度門衛(wèi)免責(zé)責(zé)任與社區(qū)和諧共建合同
- 2025年度高新技術(shù)公司股權(quán)轉(zhuǎn)讓合同
- 二零二五年度酒店整體租賃與旅游特色產(chǎn)品開發(fā)協(xié)議
- 2025年度留學(xué)住宿保障與中介服務(wù)合同
- 簡短代理合同(二零二五年度)-高端餐飲品牌代理
- 2025年度環(huán)保產(chǎn)業(yè)入股合作協(xié)議
- 2024年廣東省公務(wù)員錄用考試《行測》真題及解析
- 高中英語必背3500單詞表(完整版)
- 房產(chǎn)中介居間服務(wù)合同模板樣本
- 海洋工程裝備保險(xiǎn)研究
- 2024年廣東省深圳市中考英語試題含解析
- GB/T 16288-2024塑料制品的標(biāo)志
- 麻風(fēng)病防治知識(shí)課件
- 中國舞課件下載
- 3素炒圓白菜 教案
- 透析患者營養(yǎng)不良護(hù)理
- 學(xué)生消防安全常識(shí)問卷及答案
評(píng)論
0/150
提交評(píng)論