往返不同Activiy(不同package)

本文是Google Android應用程式範例實務課程-Day2課堂作業,說明如下。

[範例情境]
1.切換Activity
2.概念延續延續Day1作業往返不同Activiy並傳遞資料(相同package),差異在切換不同package下的Activity,但本例不傳值,只示範Activity切換

[情境分析]
1.必須有2個Activity
2.必須有2個Layout
3.2個Activity必須分屬不同package


SETP 1:新增專案
新增專案Homework2,新增方式請參考建立第一個Android


SETP 2:先行加入需用到之檔案
由情境分析可知,需於本專案新增java class與xml各一,前者名為Homework2_2.java,後者名為layout2.xml,新增後之架構如下圖。

重點I:第2個Activity(Homework2_2)的新增方式
Homework2_2需配置於不同package,故新增方式稍稍不同,步驟以完整圖片說明如下
New→Package
 
給個Name
(第1個Packagename是com.example.android.homework2,
這邊我把新Package的Name取為com.example.android.homework2_2)

在剛剛新增Package之下New一個Class作為本例第2個Activity

結束本步驟時,可以觀察本專案資料夾之變化,不熟java的朋友應可稍微領略package之意義。


SETP 3:修改AndroidMainfest.xml
於AndroidMainfest.xml新增名為com.example.android.homework2_2.Homework2_2的Activity


SETP 4:配置Layout
分別於main.xml與layout2.xml隨意放置一Button

 
SETP 5:撰寫程式碼
﹡第1個Activity(Homework2.java)

重點:setClass要連同package都指定
本來只要寫
Intent i  = new Intent() ;
i.setClass(Homework2.this, Homework2_2.class) ;
但Homework2與Homework2_2目前分屬不同package之下,必須改寫為
Intent i = new Intent() ;
i.setClass(Homework2.this, com.example.android.homework2_2.Homework2_2.class) ;

﹡第2個Activity(Homework2_2.java)

 
重點:setClass要連同package都指定
同理,Homework2與Homework2_2目前分屬不同package,要返回前Activity也是要指定
Intent i = new Intent() ;
i.setClass(Homework2_2.this, com.example.android.homework2.Homework2.class) ;


SETP 6:執行




★如果對切換Activity概念薄弱,看完本文無法明確分辨往返不同Activiy並傳遞資料(相同package) 以及往返不同Activiy(不同package)之差異,請參考ola類似的文章。該文透過單一專案,一併呈現3種Activity切換方式,有助於釐清package對呼叫class的影響。

沒有留言: