項(xiàng)目2任務(wù)3-頁(yè)面跳轉(zhuǎn)_第1頁(yè)
項(xiàng)目2任務(wù)3-頁(yè)面跳轉(zhuǎn)_第2頁(yè)
項(xiàng)目2任務(wù)3-頁(yè)面跳轉(zhuǎn)_第3頁(yè)
項(xiàng)目2任務(wù)3-頁(yè)面跳轉(zhuǎn)_第4頁(yè)
項(xiàng)目2任務(wù)3-頁(yè)面跳轉(zhuǎn)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

2相關(guān)知識(shí)34任務(wù)小結(jié)與練習(xí)1任務(wù)實(shí)施任務(wù)引入與目標(biāo)頁(yè)面跳轉(zhuǎn)一、任務(wù)引入與目標(biāo)任務(wù)目標(biāo)在任務(wù)3中,我們將新建一個(gè)AndroidStudio工程,創(chuàng)建2個(gè)頁(yè)面。使用Intent類(lèi),實(shí)現(xiàn)兩個(gè)活動(dòng)之間的跳轉(zhuǎn)。任務(wù)引入一般來(lái)說(shuō),一個(gè)物聯(lián)網(wǎng)APP有若干個(gè)頁(yè)面,用戶(hù)使用時(shí)需要在頁(yè)面之間實(shí)現(xiàn)跳轉(zhuǎn)。所謂頁(yè)面跳轉(zhuǎn),實(shí)際上就是一個(gè)活動(dòng)跳轉(zhuǎn)到另一個(gè)活動(dòng)。二、相關(guān)知識(shí)Intent類(lèi)Android的Intent,即意圖,是一個(gè)要執(zhí)行的操作的抽象描述,解決Android應(yīng)用的各項(xiàng)組件之間的通信。一個(gè)Intent對(duì)象是一個(gè)被動(dòng)的數(shù)據(jù)結(jié)構(gòu),保存著要執(zhí)行的操作。Intent包括顯式和隱式兩類(lèi)。顯式Intent直接用組件的名稱(chēng)定義目標(biāo)組件,直接實(shí)現(xiàn)明確Activity類(lèi)名的啟動(dòng),更多地用于應(yīng)用程序內(nèi)部的傳遞消息;隱式Intent通過(guò)設(shè)置Action、Data、Category,篩選出合適的Activity啟動(dòng)。顯式Intent類(lèi)的常用方法(1)newIntent():用于創(chuàng)建一個(gè)意圖。(2)Intent對(duì)象.setClass(Content對(duì)象,Activity對(duì)象.class):setClass方法的第一個(gè)參數(shù)是Context(上下文)對(duì)象,setClass函數(shù)的第二個(gè)參數(shù)是一個(gè)Class對(duì)象。(3)startActivity(Intent對(duì)象):啟動(dòng)意圖。二、相關(guān)知識(shí)Intent除了實(shí)現(xiàn)活動(dòng)之間的跳轉(zhuǎn),還可以實(shí)現(xiàn)什么功能?課堂討論三、任務(wù)實(shí)施實(shí)施設(shè)備安裝了AndroidStudio開(kāi)發(fā)環(huán)境的計(jì)算機(jī)。實(shí)施過(guò)程1.創(chuàng)建工程及配置如圖2-21所示,新建Android工程“AlertDialog”,在app→build.gradle中添加viewBinding框架:圖2-21添加viewBinding框架android.buildFeatures.viewBinding=true點(diǎn)擊同步。因?yàn)樘砑恿藇iewBinding框架,所以會(huì)為每一個(gè)布局文件自動(dòng)生成綁定類(lèi),比如會(huì)為activity_main.xml生成ActivityMainBinding類(lèi)。三、任務(wù)實(shí)施如圖2-22所示,在MainActivity.java文件中,創(chuàng)建了ActivityMainBinding類(lèi)對(duì)象binding1,在onCreate方法中實(shí)例化binding1,并通過(guò)binding1對(duì)象的getRoot方法得到activity_main.xml布局文件中的view。圖2-22實(shí)例化binding類(lèi)三、任務(wù)實(shí)施2.第一個(gè)頁(yè)面設(shè)計(jì)(1)activity_main.xml布局文件。代碼如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextView android:layout_width="wrap_content" android:layout_height="60dp" android:text="FirstActivity!"/><Button android:id="@+id/btn1" android:text="clickme,willjumptopage2" android:textSize="20sp" android:layout_width="match_parent" android:layout_height="60dp"></Button></LinearLayout>在activity_main.xml布局文件中,添加了1個(gè)按鈕控件,id為btn1,文本內(nèi)容為“clickme,willjumptopage2”。三、任務(wù)實(shí)施(2)MainActivity.java活動(dòng)文件。MainActivity.java活動(dòng)文件中MainActivity類(lèi)定義代碼如下:publicclassMainActivityextendsAppCompatActivity{ActivityMainBindingbinding1;//activity_main布局類(lèi)對(duì)象-聲明@OverrideprotectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); binding1=ActivityMainBinding.inflate(getLayoutInflater());//獲取binding setContentView(binding1.getRoot());//通過(guò)getRoot拿到view binding1.btn1.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewview){ Intentintent1=newIntent(); //由MainActivity轉(zhuǎn)向SecondActivity intent1.setClass(MainActivity.this,SecondActivity.class); startActivity(intent1);//按照意圖1,啟動(dòng)Activity } });}}三、任務(wù)實(shí)施在程序中:①binding1對(duì)象通過(guò)id獲取到btn1按鈕后,設(shè)置btn1的單擊事件監(jiān)聽(tīng)。②在重寫(xiě)btn1的onClick方法中,創(chuàng)建意圖intent。③setClass方法的第一個(gè)參數(shù)是Context(上下文)對(duì)象,Context是一個(gè)類(lèi),Activity是Context類(lèi)的子類(lèi),也就是說(shuō),所有的Activity對(duì)象,都可以向上轉(zhuǎn)型為Context對(duì)象;setClass方法的第二個(gè)參數(shù)是Class對(duì)象,在當(dāng)前場(chǎng)景下,傳入了需要被啟動(dòng)的Activity類(lèi)的class對(duì)象SecondActivity.class。④通過(guò)startActivity方法啟動(dòng)意圖,實(shí)現(xiàn)跳轉(zhuǎn)。簡(jiǎn)而言之,btn1實(shí)現(xiàn)由MainActivity轉(zhuǎn)向SecondActivity。需要注意的是,此時(shí)的SecondActivity活動(dòng)還沒(méi)有,程序會(huì)報(bào)錯(cuò)。接下來(lái)設(shè)計(jì)第二個(gè)頁(yè)面。三、任務(wù)實(shí)施3.第二個(gè)頁(yè)面設(shè)計(jì)(1)復(fù)制新的布局和活動(dòng)文件。復(fù)制新的布局和活動(dòng)文件,文件位置和第一個(gè)頁(yè)面是一樣的:在src→main→res→layout目錄中增加activity_second.xml文件,在src→main→java→entactivity中增加SecondActivity.java文件。(2)activity_second.xml布局文件。代碼如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".SecondActivity"><TextView android:layout_width="wrap_content" android:layout_height="60dp" android:text=“SecondActivity!"/><Button android:id="@+id/btn2" android:text="clickme,willjumptopage1" android:textSize="20sp" android:layout_width="match_parent" android:layout_height="60dp"></Button></LinearLayout>在activity_second.xml布局文件中,添加了1個(gè)按鈕控件,id為btn2,文本內(nèi)容為“clickme,willjumptopage1”。三、任務(wù)實(shí)施(3)SecondActivity.java活動(dòng)文件。SecondActivity.java活動(dòng)文件中SecondActivity類(lèi)定義代碼如下:publicclassMainActivityextendsAppCompatActivity{ActivityMainBindingbinding2;//activity_main布局類(lèi)對(duì)象-聲明@OverrideprotectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); binding2=ActivityMainBinding.inflate(getLayoutInflater());//獲取binding setContentView(binding2.getRoot());//通過(guò)getRoot拿到view binding2.btn2.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewview){ Intentintent2=newIntent(); //由MainActivity轉(zhuǎn)向SecondActivity intent2.setClass(MainActivity.this,SecondActivity.class); startActivity(intent2);//按照意圖2,啟動(dòng)Activity } });}}在btn2按鈕的單擊事件監(jiān)聽(tīng)器中,設(shè)置意圖:由SecondActivity轉(zhuǎn)向MainActivity。三、任務(wù)實(shí)施4.運(yùn)行測(cè)試(1)活動(dòng)注冊(cè)。測(cè)試前,注意需要將第二個(gè)Activity即SecondActivity在AndroidManifest.xml中注冊(cè),如圖2-23所示。MainActivity默認(rèn)是注冊(cè)好的。(2)結(jié)果展示。連接手機(jī),運(yùn)行效果如圖2-

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論