




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
健康標(biāo)簽——Activity與Fragment本項(xiàng)目學(xué)習(xí)任務(wù)Activity的創(chuàng)建、配置、開啟和關(guān)閉Activity的生命周期Intent的用法4.Activity的數(shù)據(jù)傳遞方法5.Fragment1.
Activity的創(chuàng)建、配置、開啟和關(guān)閉一個(gè)應(yīng)用程序可以包含零個(gè)或多個(gè)活動。沒有活動的應(yīng)用程序,用戶將無法看到程序界面,這種應(yīng)用程序通常在后臺運(yùn)行,不涉及用戶交互。Activity(活動)是一種展示型組件,它主要用于實(shí)現(xiàn)應(yīng)用功能邏輯,并通過界面顯示數(shù)據(jù)或接收用戶輸入。ActivityActivity為活動綁定自定義視圖啟動另一個(gè)活動結(jié)束活動setContentView(R.layout.activity_main);startActivity(intent);finish();Activity的常用方法ActivityActivity的創(chuàng)建Activity*Activity.javaactivity_*.xmlAndroidManifest.xml2.
Activity的生命周期Activity的生命周期指Activity從創(chuàng)建到被銷毀的整個(gè)過程。在一個(gè)生命周期內(nèi),Activity可能存在多種狀態(tài)。深入了解Activity的生命周期,有助于更合理管理應(yīng)用程序資源,設(shè)計(jì)出效率更高的應(yīng)用。Activity生命周期生命周期狀態(tài)Activity生命周期包括創(chuàng)建、可見、獲取焦點(diǎn)、失去焦點(diǎn)、不可見、重新可見、銷毀等環(huán)節(jié),每個(gè)環(huán)節(jié)Activity都定義了相關(guān)的回調(diào)方法,具體如下:onCreate():Activity創(chuàng)建時(shí)調(diào)用,通常做一些初始化設(shè)置onStart():Activity即將可見時(shí)調(diào)用onResume():Activity獲取焦點(diǎn)時(shí)調(diào)用onPause():當(dāng)前Activity被其他Activity覆蓋或屏幕鎖屏?xí)r調(diào)用onStop():Activity對用戶不可見時(shí)調(diào)用onDestroy():Activity銷毀時(shí)調(diào)用onRestart():Activity從停止?fàn)顟B(tài)到再次啟動時(shí)調(diào)用生命周期方法生命周期流程3.Intent的用法Intent被稱為意圖,是程序中各組件進(jìn)行交互的一種重要方式,它不僅可以指定當(dāng)前組件要執(zhí)行的動作,還可以在不同組件之間進(jìn)行數(shù)據(jù)傳遞。Intentisanimportantwayforcomponentsinanapplicationtointeractwitheachother.Itnotonlyspecifiestheactiontobeperformedbythecurrentcomponent,butalsoallowsdatatobepassedbetweendifferentcomponents.一般用于啟動Activity、Service以及發(fā)送廣播等。根據(jù)開啟目標(biāo)組件的方式不同,Intent被分為兩種類型顯式意圖和隱式意圖。ItisgenerallyusedtostartActivity,Service,andsendbroadcast,etc.Intentisdividedintotwotypes,explicitintentandimplicitintent,basedonthedifferentwaysofopeningthetargetcomponent.意圖Intent顯式意圖ExplicitIntent顯式意圖可以直接通過名稱開啟指定的目標(biāo)組件Explicitintentcanopenthespecifiedtargetcomponentdirectlybyname
Intentintent=newIntent(this,Main2Activity.class);startActivity(intent);隱式意圖通過指定action和category等屬性,系統(tǒng)根據(jù)這些信息進(jìn)行分析后尋找目標(biāo)Activity,它不指明要啟動的組件,而是指明要執(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過濾器主要用于聲明應(yīng)用組件可接收的Intent操作、數(shù)據(jù)和其他設(shè)置。IntentfiltersaremainlyusedtodeclareapplicationcomponentsthatcanreceiveIntentoperations,dataandothersettings.Intent過濾器IntentFilters<activityandroid:name=".MainActivity"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity>Intent過濾器
IntentFilters在清單文件AndroidManifest.xml聲明Intent過濾器時(shí),可使用下面的3個(gè)元素:WhendeclaringIntentfiltersinthemanifestfileAndroidManifest.xml,thefollowing3elementscanbeused.<action>元素:在其name屬性中聲明組件可接受的Intent操作,操作名稱可以是自定義的文本字符串或者ent.action類的常量。<action>element:DeclaretheIntentactionsthatthecomponentcanacceptinitsnameattribute,theactionnamecanbeacustomtextstringoraconstantoftheent.actionclass.<category>元素:在其name屬性中聲明組件可接受的Intent類別,類別名稱通常為ent.category類中的常量。如果要讓活動響應(yīng)隱式Intent,則必須將過濾器的類別設(shè)置為ent.category.DEFAULT。如果沒有在Intent過濾器中聲明DEFAULT類別,則隱式Intent不會解析該組件。<category>element:DeclarestheIntentcategoriesthatthecomponentcanacceptinitsnameattribute,thecategorynameisusuallyaconstantintheent.categoryclass.IfyouwanttheactivitytorespondtoanimplicitIntent,youmustsetthefilter'scategorytoent.category.DEFAULT.iftheDEFAULTcategoryisnotdeclaredintheIntentfilter,theimplicitIntentwillnotresolvethecomponent.Intent過濾器
IntentFilters在清單文件AndroidManifest.xml聲明Intent過濾器時(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過濾器
IntentFilters在代碼中創(chuàng)建Intent對象時(shí),可調(diào)用下列方法為Intent對象添加操作、類別、數(shù)據(jù)或其他屬性:WhencreatinganIntentobjectincode,thefollowingmethodscanbecalledtoaddactions,categories,data,orotherpropertiestotheIntentobject.setAction():設(shè)置Intent對象操作。也可在Intent對象構(gòu)造函數(shù)中指定操作。setAction():SetstheIntentobjectaction.YoucanalsospecifytheactionintheIntentobjectconstructor.addCategory():為Intent對象添加類別。addCategory():AddsacategorytotheIntentobject.setData():設(shè)置數(shù)據(jù)URI。setData():setthedataURI.setType():設(shè)置MIME類型。setType():settheMIMEtype.Intent過濾器
IntentFilters在代碼中創(chuàng)建Intent對象時(shí),可調(diào)用下列方法為Intent對象添加操作、類別、數(shù)據(jù)或其他屬性:WhencreatinganIntentobjectincode,thefollowingmethodscanbecalledtoaddactions,categories,data,orotherpropertiestotheIntentobject.setDataAndType():setData()和setType()會相互抵消彼此的設(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對象傳遞數(shù)據(jù)03獲取活動返回的數(shù)據(jù)1putExtra(name,value)方法可將指定的數(shù)據(jù)封裝到Intent對象中。其中,name為表示數(shù)據(jù)名稱的字符串,value為要傳遞的各種數(shù)據(jù)類型的值。要獲取Intent對象中封裝的數(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的對象數(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對象中,再將Bundle對象封裝到Intent對象中傳遞給啟動的活動。Bundle對象的各種putXXX(Stringkey,XXXvalue)方法,可將XXX類型的數(shù)據(jù)封裝到其中,對應(yīng)的用getXXX(Stringkey)方法從其中獲取數(shù)據(jù)。Bundle對象準(zhǔn)備好之后,調(diào)用putExtras(bundle)或putExtra(name,bundle)方法將其封裝到Intent對象中。要從Intent對象中獲取Bundle對象時(shí),調(diào)用對應(yīng)的getExtras()或getBundleExtra()方法即可。使用Bundle對象傳遞數(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對象傳遞數(shù)據(jù)Bundle3第一個(gè)界面MainActivity第二個(gè)界面Main2ActivitystartActivityforResult()請求返回結(jié)果setResult()設(shè)置結(jié)果onActivityResult()處理返回結(jié)果獲取活動返回的數(shù)據(jù)DataBackstartActivityForResult(intent,requestCode)方法來啟動活動,請求返回結(jié)果:參數(shù)intent是一個(gè)Intent對象,用于封裝需要傳遞給活動的數(shù)據(jù);參數(shù)requestCode為請求碼,是一個(gè)整數(shù),用來標(biāo)識當(dāng)前請求;一個(gè)活動可能會接收到其他不同活動的請求,從活動返回時(shí),它會原樣返回接收到的請求碼;在處理返回結(jié)果時(shí),可通過請求碼判斷是不是從所請求的活動返回。3獲取活動返回的數(shù)據(jù)DataBack在第二個(gè)Activity中,用setResult(resultCode,intent)方法設(shè)置返回結(jié)果,resultCode為結(jié)果代碼,intent為封裝了返回?cái)?shù)據(jù)的Intent對象。在第一個(gè)Activity中需重寫onActivityResult(intrequestCode,intresultCode,Intentdata)方法來處理返回結(jié)果:requestCode為從所請求的活動返回的它所接收到的請求碼;resultCode為結(jié)果代碼,常量RESULT_CANCELED表示用戶取消了操作,RESULT_OK表示用戶正確完成了操作;data為請求活動返回的Intent對象,從中可獲取返回的數(shù)據(jù)。3獲取活動返回的數(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獲取活動返回的數(shù)據(jù)DataBack3Intentintent=newIntent();intent.putExtra(“ExtraData",“MainActivity");setResult(1,intent);finish();第二個(gè)Activity獲取活動返回的數(shù)據(jù)DataBack5.FragmentFragment的由來隨著智能手機(jī)和平板的飛速發(fā)展,設(shè)備的屏幕逐漸多樣化,為了提高應(yīng)用的適配性,Android3.0開始推出了Fragment。Fragment經(jīng)常翻譯成“碎片”或“片段”,是Android應(yīng)用中的可重復(fù)使用的UI組件,可以以UI模塊的形式嵌入Activity。Fragment的由來Fragment不能獨(dú)立存在,必須由一個(gè)Activity或其他Fragment托管。每個(gè)Fragment都有自己的布局文件,可以在其中定義UI元素。Fragment可以處理自己的輸入事件,例如鍵盤輸入、觸摸事件等。當(dāng)用戶與Fragment交互時(shí),系統(tǒng)會自動將該Fragment的視圖層次結(jié)構(gòu)添加到宿主的視圖層次結(jié)構(gòu)中,或者將其附加到宿主的視圖層次結(jié)構(gòu)上。Fragment的由來Fragment生命周期由于Fragment是嵌入到Activity中使用的,所以它的生命周期狀態(tài)直接受到所屬Activity生命周期狀態(tài)的影響。Fragment擁有其獨(dú)特的生命周期,涵蓋了創(chuàng)建、顯示、隱藏以及銷毀等一系列狀態(tài)變化。在Fragment的生命周期中,系統(tǒng)會適時(shí)地調(diào)用對應(yīng)的回調(diào)方法以通知Fragment所處狀態(tài)的改變。開發(fā)者可以通過實(shí)現(xiàn)這些回調(diào)函數(shù)來有效地管理Fragment的狀態(tài)和行為。Fragment生命周期當(dāng)在Activity中創(chuàng)建Fragment時(shí),該Fragment處于啟動狀態(tài)。當(dāng)Activity被暫?;蛲V惯\(yùn)行時(shí),其中的所有Fragment也會相應(yīng)地進(jìn)入暫停或銷毀狀態(tài)。當(dāng)Activity被完全銷毀時(shí),所有在該Activity中的Fragment也會一同被銷毀。Fragment生命周期當(dāng)一個(gè)Activity處于運(yùn)行狀態(tài)時(shí),可以單獨(dú)對每一個(gè)Fragment進(jìn)行操作,如添加或刪除。當(dāng)添加一個(gè)Fragment時(shí),該Fragment將處于啟動狀態(tài);當(dāng)刪除一個(gè)Fragment時(shí),該Fragment則會被銷毀。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類,在重寫的方法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的全路徑名稱。可以在XML代碼中直接輸入該標(biāo)簽,或者在Design視圖下,從Palette區(qū)的Containers中找到FragmentContainerView,將其拖入布局。Fragment的創(chuàng)建(2)在Activit
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高中化學(xué)新教材同步 必修第一冊 第3章 第2節(jié) 實(shí)驗(yàn)活動2 鐵及其化合物的性質(zhì)
- 【四川卷】四川省德陽市高中2022級(2025屆)高三質(zhì)量監(jiān)測考試(二)(德陽二診)(2.21-2.23)英語試卷答案
- 傾廢航行數(shù)據(jù)記錄儀戰(zhàn)略市場規(guī)劃報(bào)告
- 鎳精礦戰(zhàn)略市場規(guī)劃報(bào)告
- 信鴿教練合同范本
- 加盟 轉(zhuǎn)讓合同范本
- 值守合同范本
- 中國學(xué)生發(fā)展核心素養(yǎng)心得體會
- 臺車出售合同范本
- 水利工程師水力學(xué)試題(附參考答案)
- 2025年安徽職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 新種子法律法規(guī)培訓(xùn)講解
- 2025年東營科技職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025-2030年中國民用通信天線行業(yè)發(fā)展趨勢規(guī)劃研究報(bào)告
- 2025年計(jì)算機(jī)二級考試題庫350題含答案(WPS)
- 浙江省金華市婺城區(qū)2024-2025學(xué)年九年級上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 《中藥房使用課件》
- 萬達(dá)廣場籌備期項(xiàng)目管理規(guī)范
- 品管圈PDCA改善案例-降低住院患者跌倒發(fā)生率
- 財(cái)務(wù)會計(jì)(對外經(jīng)濟(jì)貿(mào)易大學(xué))知到智慧樹章節(jié)測試課后答案2024年秋對外經(jīng)濟(jì)貿(mào)易大學(xué)
- 分布式計(jì)算平臺設(shè)計(jì)與實(shí)現(xiàn)
評論
0/150
提交評論