版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
健康標(biāo)簽——Activity與Fragment本項(xiàng)目學(xué)習(xí)任務(wù)Activity的創(chuàng)建、配置、開(kāi)啟和關(guān)閉Activity的生命周期Intent的用法4.Activity的數(shù)據(jù)傳遞方法5.Fragment1.
Activity的創(chuàng)建、配置、開(kāi)啟和關(guān)閉一個(gè)應(yīng)用程序可以包含零個(gè)或多個(gè)活動(dòng)。沒(méi)有活動(dòng)的應(yīng)用程序,用戶將無(wú)法看到程序界面,這種應(yīng)用程序通常在后臺(tái)運(yùn)行,不涉及用戶交互。Activity(活動(dòng))是一種展示型組件,它主要用于實(shí)現(xiàn)應(yīng)用功能邏輯,并通過(guò)界面顯示數(shù)據(jù)或接收用戶輸入。ActivityActivity為活動(dòng)綁定自定義視圖啟動(dòng)另一個(gè)活動(dòng)結(jié)束活動(dòng)setContentView(R.layout.activity_main);startActivity(intent);finish();Activity的常用方法ActivityActivity的創(chuàng)建Activity*Activity.javaactivity_*.xmlAndroidManifest.xml2.
Activity的生命周期Activity的生命周期指Activity從創(chuàng)建到被銷毀的整個(gè)過(guò)程。在一個(gè)生命周期內(nèi),Activity可能存在多種狀態(tài)。深入了解Activity的生命周期,有助于更合理管理應(yīng)用程序資源,設(shè)計(jì)出效率更高的應(yīng)用。Activity生命周期生命周期狀態(tài)Activity生命周期包括創(chuàng)建、可見(jiàn)、獲取焦點(diǎn)、失去焦點(diǎn)、不可見(jiàn)、重新可見(jiàn)、銷毀等環(huán)節(jié),每個(gè)環(huán)節(jié)Activity都定義了相關(guān)的回調(diào)方法,具體如下:onCreate():Activity創(chuàng)建時(shí)調(diào)用,通常做一些初始化設(shè)置onStart():Activity即將可見(jiàn)時(shí)調(diào)用onResume():Activity獲取焦點(diǎn)時(shí)調(diào)用onPause():當(dāng)前Activity被其他Activity覆蓋或屏幕鎖屏?xí)r調(diào)用onStop():Activity對(duì)用戶不可見(jiàn)時(shí)調(diào)用onDestroy():Activity銷毀時(shí)調(diào)用onRestart():Activity從停止?fàn)顟B(tài)到再次啟動(dòng)時(shí)調(diào)用生命周期方法生命周期流程3.Intent的用法Intent被稱為意圖,是程序中各組件進(jìn)行交互的一種重要方式,它不僅可以指定當(dāng)前組件要執(zhí)行的動(dòng)作,還可以在不同組件之間進(jìn)行數(shù)據(jù)傳遞。Intentisanimportantwayforcomponentsinanapplicationtointeractwitheachother.Itnotonlyspecifiestheactiontobeperformedbythecurrentcomponent,butalsoallowsdatatobepassedbetweendifferentcomponents.一般用于啟動(dòng)Activity、Service以及發(fā)送廣播等。根據(jù)開(kāi)啟目標(biāo)組件的方式不同,Intent被分為兩種類型顯式意圖和隱式意圖。ItisgenerallyusedtostartActivity,Service,andsendbroadcast,etc.Intentisdividedintotwotypes,explicitintentandimplicitintent,basedonthedifferentwaysofopeningthetargetcomponent.意圖Intent顯式意圖ExplicitIntent顯式意圖可以直接通過(guò)名稱開(kāi)啟指定的目標(biāo)組件Explicitintentcanopenthespecifiedtargetcomponentdirectlybyname
Intentintent=newIntent(this,Main2Activity.class);startActivity(intent);隱式意圖通過(guò)指定action和category等屬性,系統(tǒng)根據(jù)這些信息進(jìn)行分析后尋找目標(biāo)Activity,它不指明要啟動(dòng)的組件,而是指明要執(zhí)行的操作,讓系統(tǒng)去選擇可完成該操作的組件。TheimplicitintentistofindthetargetActivitybyspecifyingthepropertiesofactionandcategory,etc.ThesystemwillanalyzethisinformationandlookforthetargetActivity.Itwillnotspecifythecomponenttobelaunched,butwillspecifytheactiontobeperformedandletthesystemchoosethecomponentthatcancompletetheaction.隱式意圖ImplicitIntentIntentintent=newIntent();intent.setAction(".jssvc.START_ACTIVITY");startActivity(intent);<activityandroid:name="cn.itcast.Main2Activity"><intent-filter><actionandroid:name="cn.itcast.START_ACTIVITY"/><categoryandroid:name="ent.category.DEFAULT"/></intent-filter></activity>Intent過(guò)濾器主要用于聲明應(yīng)用組件可接收的Intent操作、數(shù)據(jù)和其他設(shè)置。IntentfiltersaremainlyusedtodeclareapplicationcomponentsthatcanreceiveIntentoperations,dataandothersettings.Intent過(guò)濾器IntentFilters<activityandroid:name=".MainActivity"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity>Intent過(guò)濾器
IntentFilters在清單文件AndroidManifest.xml聲明Intent過(guò)濾器時(shí),可使用下面的3個(gè)元素:WhendeclaringIntentfiltersinthemanifestfileAndroidManifest.xml,thefollowing3elementscanbeused.<action>元素:在其name屬性中聲明組件可接受的Intent操作,操作名稱可以是自定義的文本字符串或者ent.action類的常量。<action>element:DeclaretheIntentactionsthatthecomponentcanacceptinitsnameattribute,theactionnamecanbeacustomtextstringoraconstantoftheent.actionclass.<category>元素:在其name屬性中聲明組件可接受的Intent類別,類別名稱通常為ent.category類中的常量。如果要讓活動(dòng)響應(yīng)隱式Intent,則必須將過(guò)濾器的類別設(shè)置為ent.category.DEFAULT。如果沒(méi)有在Intent過(guò)濾器中聲明DEFAULT類別,則隱式Intent不會(huì)解析該組件。<category>element:DeclarestheIntentcategoriesthatthecomponentcanacceptinitsnameattribute,thecategorynameisusuallyaconstantintheent.categoryclass.IfyouwanttheactivitytorespondtoanimplicitIntent,youmustsetthefilter'scategorytoent.category.DEFAULT.iftheDEFAULTcategoryisnotdeclaredintheIntentfilter,theimplicitIntentwillnotresolvethecomponent.Intent過(guò)濾器
IntentFilters在清單文件AndroidManifest.xml聲明Intent過(guò)濾器時(shí),可使用下面的3個(gè)元素:WhendeclaringIntentfiltersinthemanifestfileAndroidManifest.xml,thefollowing3elementscanbeused.<data>元素:聲明數(shù)據(jù)URI的scheme、host、port、path等,或者是數(shù)據(jù)的MIME類型。<data>element:declaresthescheme,host,port,path,etc.ofthedataURI,ortheMIMEtypeofthedata.Intent過(guò)濾器
IntentFilters在代碼中創(chuàng)建Intent對(duì)象時(shí),可調(diào)用下列方法為Intent對(duì)象添加操作、類別、數(shù)據(jù)或其他屬性:WhencreatinganIntentobjectincode,thefollowingmethodscanbecalledtoaddactions,categories,data,orotherpropertiestotheIntentobject.setAction():設(shè)置Intent對(duì)象操作。也可在Intent對(duì)象構(gòu)造函數(shù)中指定操作。setAction():SetstheIntentobjectaction.YoucanalsospecifytheactionintheIntentobjectconstructor.addCategory():為Intent對(duì)象添加類別。addCategory():AddsacategorytotheIntentobject.setData():設(shè)置數(shù)據(jù)URI。setData():setthedataURI.setType():設(shè)置MIME類型。setType():settheMIMEtype.Intent過(guò)濾器
IntentFilters在代碼中創(chuàng)建Intent對(duì)象時(shí),可調(diào)用下列方法為Intent對(duì)象添加操作、類別、數(shù)據(jù)或其他屬性:WhencreatinganIntentobjectincode,thefollowingmethodscanbecalledtoaddactions,categories,data,orotherpropertiestotheIntentobject.setDataAndType():setData()和setType()會(huì)相互抵消彼此的設(shè)置,要同時(shí)設(shè)置URI和MIME類型,則需調(diào)用setDataAndType()。setDataAndType():setData()andsetType()willcanceleachother'ssettings.TosetbothURIandMIMEtype,callsetDataAndType().4.Activity的數(shù)據(jù)傳遞學(xué)習(xí)內(nèi)容使用putExtra()傳遞數(shù)據(jù)0102使用Bundle對(duì)象傳遞數(shù)據(jù)03獲取活動(dòng)返回的數(shù)據(jù)1putExtra(name,value)方法可將指定的數(shù)據(jù)封裝到Intent對(duì)象中。其中,name為表示數(shù)據(jù)名稱的字符串,value為要傳遞的各種數(shù)據(jù)類型的值。要獲取Intent對(duì)象中封裝的數(shù)據(jù),可調(diào)用各種getXXXExtra()方法。使用putExtra()傳遞數(shù)據(jù)putExtra()getCharExtra(Stringname,chardefaultValue):獲取指定name的char類型數(shù)據(jù)。getFloatExtra(Stringname,floatdefaultValue):獲取指定name的float類型數(shù)據(jù)。getFloatArrayExtra(Stringname):獲取指定name的float類型數(shù)組。getIntArrayExtra(Stringname):獲取指定name的int類型數(shù)組。getIntExtra(Stringname,intdefaultValue):獲取指定name的int類型數(shù)據(jù)。getStringArrayExtra(Stringname):獲取指定name的String類型數(shù)組。getStringExtra(Stringname):獲取指定name的String類型數(shù)據(jù)。getSerializableExtra(Stringname):獲取指定name的對(duì)象數(shù)據(jù)。使用putExtra()傳遞數(shù)據(jù)putExtra()Intentintent=newIntent(MainActivity.this,Main2Activity.class);intent.putExtra("name","zhangsan");intent.putExtra("score",95);startActivity(intent);Intentintent=getIntent();Stringname=intent.getStringExtra("name");intscore=intent.getIntExtra("score",0);第一個(gè)Activity第二個(gè)Activity使用putExtra()傳遞數(shù)據(jù)putExtra()2將各種數(shù)據(jù)封裝到一個(gè)Bundle對(duì)象中,再將Bundle對(duì)象封裝到Intent對(duì)象中傳遞給啟動(dòng)的活動(dòng)。Bundle對(duì)象的各種putXXX(Stringkey,XXXvalue)方法,可將XXX類型的數(shù)據(jù)封裝到其中,對(duì)應(yīng)的用getXXX(Stringkey)方法從其中獲取數(shù)據(jù)。Bundle對(duì)象準(zhǔn)備好之后,調(diào)用putExtras(bundle)或putExtra(name,bundle)方法將其封裝到Intent對(duì)象中。要從Intent對(duì)象中獲取Bundle對(duì)象時(shí),調(diào)用對(duì)應(yīng)的getExtras()或getBundleExtra()方法即可。使用Bundle對(duì)象傳遞數(shù)據(jù)Bundle2Bundlebundle=newBundle();bundle.putString("name","zhangsan");bundle.putInt("score",95);intent.putExtras(bundle);startActivity(intent);Bundlebundle=getIntent().getExtras();Stringname=bundle.getString("name");intscore=bundle.getInt("score",0);第一個(gè)Activity第二個(gè)Activity使用Bundle對(duì)象傳遞數(shù)據(jù)Bundle3第一個(gè)界面MainActivity第二個(gè)界面Main2ActivitystartActivityforResult()請(qǐng)求返回結(jié)果setResult()設(shè)置結(jié)果onActivityResult()處理返回結(jié)果獲取活動(dòng)返回的數(shù)據(jù)DataBackstartActivityForResult(intent,requestCode)方法來(lái)啟動(dòng)活動(dòng),請(qǐng)求返回結(jié)果:參數(shù)intent是一個(gè)Intent對(duì)象,用于封裝需要傳遞給活動(dòng)的數(shù)據(jù);參數(shù)requestCode為請(qǐng)求碼,是一個(gè)整數(shù),用來(lái)標(biāo)識(shí)當(dāng)前請(qǐng)求;一個(gè)活動(dòng)可能會(huì)接收到其他不同活動(dòng)的請(qǐng)求,從活動(dòng)返回時(shí),它會(huì)原樣返回接收到的請(qǐng)求碼;在處理返回結(jié)果時(shí),可通過(guò)請(qǐng)求碼判斷是不是從所請(qǐng)求的活動(dòng)返回。3獲取活動(dòng)返回的數(shù)據(jù)DataBack在第二個(gè)Activity中,用setResult(resultCode,intent)方法設(shè)置返回結(jié)果,resultCode為結(jié)果代碼,intent為封裝了返回?cái)?shù)據(jù)的Intent對(duì)象。在第一個(gè)Activity中需重寫(xiě)onActivityResult(intrequestCode,intresultCode,Intentdata)方法來(lái)處理返回結(jié)果:requestCode為從所請(qǐng)求的活動(dòng)返回的它所接收到的請(qǐng)求碼;resultCode為結(jié)果代碼,常量RESULT_CANCELED表示用戶取消了操作,RESULT_OK表示用戶正確完成了操作;data為請(qǐng)求活動(dòng)返回的Intent對(duì)象,從中可獲取返回的數(shù)據(jù)。3獲取活動(dòng)返回的數(shù)據(jù)DataBack3
Intentintent=newIntent(MainActivity.this,Main2Activity.class);startActivityForResult(intent,1);@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){super.onActivityResult(requestCode,resultCode,data);if(requestCode==1){ if(resultCode==1){Stringstring=data.getStringExtra(“ExtraData");}}}第一個(gè)Activity獲取活動(dòng)返回的數(shù)據(jù)DataBack3Intentintent=newIntent();intent.putExtra(“ExtraData",“MainActivity");setResult(1,intent);finish();第二個(gè)Activity獲取活動(dòng)返回的數(shù)據(jù)DataBack5.FragmentFragment的由來(lái)隨著智能手機(jī)和平板的飛速發(fā)展,設(shè)備的屏幕逐漸多樣化,為了提高應(yīng)用的適配性,Android3.0開(kāi)始推出了Fragment。Fragment經(jīng)常翻譯成“碎片”或“片段”,是Android應(yīng)用中的可重復(fù)使用的UI組件,可以以UI模塊的形式嵌入Activity。Fragment的由來(lái)Fragment不能獨(dú)立存在,必須由一個(gè)Activity或其他Fragment托管。每個(gè)Fragment都有自己的布局文件,可以在其中定義UI元素。Fragment可以處理自己的輸入事件,例如鍵盤(pán)輸入、觸摸事件等。當(dāng)用戶與Fragment交互時(shí),系統(tǒng)會(huì)自動(dòng)將該Fragment的視圖層次結(jié)構(gòu)添加到宿主的視圖層次結(jié)構(gòu)中,或者將其附加到宿主的視圖層次結(jié)構(gòu)上。Fragment的由來(lái)Fragment生命周期由于Fragment是嵌入到Activity中使用的,所以它的生命周期狀態(tài)直接受到所屬Activity生命周期狀態(tài)的影響。Fragment擁有其獨(dú)特的生命周期,涵蓋了創(chuàng)建、顯示、隱藏以及銷毀等一系列狀態(tài)變化。在Fragment的生命周期中,系統(tǒng)會(huì)適時(shí)地調(diào)用對(duì)應(yīng)的回調(diào)方法以通知Fragment所處狀態(tài)的改變。開(kāi)發(fā)者可以通過(guò)實(shí)現(xiàn)這些回調(diào)函數(shù)來(lái)有效地管理Fragment的狀態(tài)和行為。Fragment生命周期當(dāng)在Activity中創(chuàng)建Fragment時(shí),該Fragment處于啟動(dòng)狀態(tài)。當(dāng)Activity被暫?;蛲V惯\(yùn)行時(shí),其中的所有Fragment也會(huì)相應(yīng)地進(jìn)入暫?;蜾N毀狀態(tài)。當(dāng)Activity被完全銷毀時(shí),所有在該Activity中的Fragment也會(huì)一同被銷毀。Fragment生命周期當(dāng)一個(gè)Activity處于運(yùn)行狀態(tài)時(shí),可以單獨(dú)對(duì)每一個(gè)Fragment進(jìn)行操作,如添加或刪除。當(dāng)添加一個(gè)Fragment時(shí),該Fragment將處于啟動(dòng)狀態(tài);當(dāng)刪除一個(gè)Fragment時(shí),該Fragment則會(huì)被銷毀。Fragment生命周期Fragment的生命周期與Activity相似,還包括:onAttach():Fragment和Activity建立關(guān)聯(lián)時(shí)調(diào)用onCreateView():Fragment創(chuàng)建視圖時(shí)調(diào)用onActivityCreate():關(guān)聯(lián)Activity創(chuàng)建完成時(shí)調(diào)用onDestroyView():關(guān)聯(lián)的視圖被移除時(shí)調(diào)用onDetach():Fragment和Activity解除關(guān)聯(lián)時(shí)調(diào)用Fragment的創(chuàng)建可以直接在Java源碼目錄右擊包名→New→Fragment→Fragment(Blank)即可創(chuàng)建空白的Fragment類及l(fā)ayout。生成的Fragment類文件繼承自Fragment類,在重寫(xiě)的方法onCreateView()中加載了layout文件,可以在onCreateView()方法中添加控件交互邏輯publicclassBlankFragmentextendsFragment{
@Override
publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){
//Inflatethelayoutforthisfragment
returninflater.inflate(R.layout.fragment_blank,container,false);
}
}
Fragment的創(chuàng)建Fragment創(chuàng)建后不能單獨(dú)使用,需要將Fragment添加到Activity中。在Activity中添加Fragment有兩種方式:(1)在布局文件layout中添加Fragment在Activity引用的布局文件中添加Fragment時(shí),需要使用<androidx.fragment.app.FragmentContainerView>標(biāo)簽,該標(biāo)簽與其他控件的標(biāo)簽類似,但必須指定android:name屬性,其屬性值為Fragment的全路徑名稱??梢栽赬ML代碼中直接輸入該標(biāo)簽,或者在Design視圖下,從Palette區(qū)的Containers中找到FragmentContainerView,將其拖入布局。Fragment的創(chuàng)建(2)在Activit
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年西安印鈔有限公司招聘(11人)筆試模擬試題及答案解析
- 2026年1月南京市溧水區(qū)教育局所屬事業(yè)單位公開(kāi)招聘教師71人筆試備考試題及答案解析
- 2026貴陽(yáng)市城鄉(xiāng)建設(shè)學(xué)校秋季兼職教師招聘10人信息考試參考題庫(kù)及答案解析
- 2026年蚌埠學(xué)院?jiǎn)握新殬I(yè)技能考試模擬試題帶答案解析
- 2026中信銀行授信執(zhí)行部社會(huì)招聘考試備考試題及答案解析
- 2026北京海淀區(qū)學(xué)府幼兒園招聘考試備考題庫(kù)及答案解析
- 察隅縣2026年機(jī)關(guān)事業(yè)單位編外輔助崗位招聘?jìng)淇碱}庫(kù)帶答案詳解
- 2026年江蘇有線蘇州分公司勞務(wù)派遣制員工招聘?jìng)淇碱}庫(kù)帶答案詳解
- 中央團(tuán)校(中國(guó)青年政治學(xué)院)2026年度社會(huì)人員公開(kāi)招聘10人備考題庫(kù)參考答案詳解
- 2026年深圳南山二外同澤學(xué)校校園招聘8人備考題庫(kù)及參考答案詳解
- 美的空調(diào)使用培訓(xùn)
- 安利價(jià)值遠(yuǎn)景課件
- 人工關(guān)節(jié)制備程序
- 2022北京西城五年級(jí)(上)期末語(yǔ)文(教師版)
- 期末復(fù)習(xí)題2025-2026學(xué)年人教版七年級(jí)數(shù)學(xué)上冊(cè)(含答案)-人教版(2024)七上
- AHA2025心肺復(fù)蘇與心血管急救指南解讀課件
- 光伏系統(tǒng)運(yùn)行維護(hù)與檢修方案
- 2025年執(zhí)業(yè)獸醫(yī)考試真題及解析及答案
- 2025年江蘇省建筑施工企業(yè)主要負(fù)責(zé)人安全員A證考核考試題庫(kù)附答案
- 2025年長(zhǎng)沙電力職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 高校學(xué)生評(píng)價(jià)體系改革方案
評(píng)論
0/150
提交評(píng)論