在“安卓編程學(xué)習(xí)第五天”中,實(shí)現(xiàn)了菜單項(xiàng)的響應(yīng)。通過編輯“res->menu->main.xml”文件實(shí)現(xiàn)菜單項(xiàng)的添加,在onOptionsItemSelected()方法中通過getItemId()方法判斷菜單中哪個(gè)項(xiàng)被選中,最終實(shí)現(xiàn)菜單項(xiàng)的響應(yīng)。
在“安卓編程學(xué)習(xí)第四天”中,提到了按鍵響應(yīng)的實(shí)現(xiàn),當(dāng)按下按鍵后,會(huì)改變TextView顯示的內(nèi)容。今天,將通過按鍵實(shí)現(xiàn)活動(dòng)的切換,即按下按鍵后,從主活動(dòng)切換到另外一個(gè)活動(dòng)。
要實(shí)現(xiàn)活動(dòng)的切換,首先要將新的活動(dòng)加入到程序中。
1 活動(dòng)的添加
將活動(dòng)添加到程序中,主要包含以下三個(gè)步驟:首先添加活動(dòng)對應(yīng)的java文件;接下來添加活動(dòng)對應(yīng)的界面布局xml文件;最后在AndroidManifest.xml中對活動(dòng)進(jìn)行注冊。
1.1 添加java文件
在“Hello_World->src->com.exmple.hello_world”上點(diǎn)擊鼠標(biāo)右鍵,在彈出的菜單中選擇“New->Class”,如圖1-1所示。

圖1-1 新建Java文件
在彈出的“New Java Class”對話框中,設(shè)置新建活動(dòng)的名稱及父類。在“Name”項(xiàng)中輸入名稱“Second_Activiy”,在“Superclass”項(xiàng)中設(shè)置活動(dòng)的父類,將該父類設(shè)置為Activity,可以直接輸入“android.app.Activity”指定Activity類的完成名稱,也可以先輸入Activity,之后點(diǎn)擊右側(cè)的“Browse...”按鍵,在彈出的對話框中選擇“Activity-android.app”,最后點(diǎn)擊“Finish”按鍵,完成java文件的添加,如圖1-2所示。

圖1-2 設(shè)置活動(dòng)名稱及父類
其中“android.app.Activity”的含義是:android.app是一個(gè)包(package),而Activity是這個(gè)包中的一個(gè)類,而添加的Second_Activity是android.app包的Activity類的派生類。
完成以上步驟之后,就可以在左側(cè)的“Package Explorer”中看到添加的Second_Activity的活動(dòng)了,如圖1-3所示。

圖1-3 Second_Activity活動(dòng)對應(yīng)的Java文件
1.2 界面布局文件的添加
在“Hello_World->res->layout”的右鍵菜單中選擇“New->Android XML File”,如圖1-4所示。

圖1-4 新建界面布局文件
在彈出的“New Android XML File”對話框中的“File”項(xiàng)上輸入界面布局文件的名稱,在此輸入“secondactivity_main”,最后點(diǎn)擊“Finish”按鍵,如圖1-5所示。

圖1-5 設(shè)置界面布局文件的名稱
此時(shí),在左側(cè)的“Package Explorer”中看到添加的界面布局文件secondactivity_main.xml了,如圖1-6所示。

圖1-6 Second_Activity活動(dòng)的界面布局文件
1.3 活動(dòng)的注冊
在AndroidManifest.xml中實(shí)現(xiàn)對新建活動(dòng)的注冊。鼠標(biāo)左鍵雙擊“Hello_World->AndroidManifest.xml”,之后在右側(cè)下方的選項(xiàng)卡中選擇“AndroidManifest.xml”,之后在右側(cè)上方即可以看到AndroidManifest.xml文件的內(nèi)容了,如圖1-7所示。

圖1-7 顯示AndroidManifest.xml文件的內(nèi)容
在<application></application>對添加的Second_Activity活動(dòng)進(jìn)行注冊,代碼如下所示
<activityandroid:name="com.example.hello_world.Second_Activity"
android:label="第二個(gè)活動(dòng)">
</activity>
其中,android:name指定了活動(dòng)的名稱,com.exmaple.hello_world.Second_Activity是新添加活動(dòng)的完整名稱;android:label表示活動(dòng)的標(biāo)題。
在向程序中添加完活動(dòng)之后,接下來實(shí)現(xiàn)的功能是當(dāng)按下主活動(dòng)的按鍵時(shí),切換到剛剛添加的活動(dòng)上。
2 活動(dòng)的切換
兩個(gè)活動(dòng)間的切換可以通過Intent類來實(shí)現(xiàn)。Intent描述了一個(gè)操作,包含操作的數(shù)據(jù)和操作的動(dòng)作等。而在“安卓編程學(xué)習(xí)第四天”中提到,在MainActivity類的onCreate()方法中實(shí)現(xiàn)按鍵的響應(yīng),即在setOnClickListener()方法中實(shí)現(xiàn)。
2.1 Intent對象的創(chuàng)建
因此,首先在setOnClickListener()方法中使用new定義一個(gè)Intent類的對象,定義Intent類的對象需要使用到Intent類的構(gòu)造函數(shù),這個(gè)類的構(gòu)造函數(shù)有很多種,其中一種的格式為
public Intent(Context packageContext,Class<?> cls)
其中,PackageContext表示使用Intent類的應(yīng)用程序包的上下文;cls表示使用Intent類的組件類。
使用該構(gòu)造函數(shù),通過new關(guān)鍵字定義Intent類對象的代碼是
Intent intent = new Intent(MainActivity.this, Second_Activity.class);
其中,MainActivity是主活動(dòng),MainActivity.this表示包的上下文;Second_Activity是剛創(chuàng)建的活動(dòng),Second_Activity.class表示活動(dòng)的類。
2.2 Intent的啟動(dòng)
接下來調(diào)用Activity類的startActivity()方法啟動(dòng)Intent。該方法的格式為
public abstract void startActivity(Intent intent)
其中,參數(shù)intent表示要啟動(dòng)的Intent。使用startActivity()方法啟動(dòng)Intent的代碼為
startActivity(intent);
在模擬設(shè)備中運(yùn)行該代碼,當(dāng)點(diǎn)擊主活動(dòng)的按鍵時(shí),會(huì)切換到添加的第二個(gè)活動(dòng)上去,如圖2-1所示。

圖2-1 切換到第二個(gè)活動(dòng)
從第二個(gè)活動(dòng)切換到主活動(dòng)時(shí),只需要點(diǎn)擊模擬設(shè)備右側(cè)的“返回”按鍵即可。
3 小結(jié)
今天學(xué)習(xí)了兩個(gè)活動(dòng)之間的切換。首先完成活動(dòng)的添加,是通過三個(gè)步驟實(shí)現(xiàn)的,分別是添加活動(dòng)對應(yīng)的java文件;添加活動(dòng)對應(yīng)的界面布局xml文件;在AndroidManifest.xml中對活動(dòng)進(jìn)行注冊。接下來在MainActivity類的onCreate()方法中實(shí)現(xiàn)按鍵的響應(yīng),即在setOnClickListener()方法中完成對Intent類對象的創(chuàng)建和啟動(dòng)。當(dāng)點(diǎn)擊了主活動(dòng)中的按鍵時(shí),會(huì)切換到添加的活動(dòng),而點(diǎn)擊模擬設(shè)備右側(cè)的“返回”按鍵,即可實(shí)現(xiàn)從添加的活動(dòng)切換回主活動(dòng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注