Java 入門指南

單元 30 - 換頁

~~學習進度表~~

Android App 要增加新的頁面就要增加新的 Activity ,加入新的 Activity ,在專案 (project) 上點擊滑鼠右鍵,利用快選選單依下圖 NewActivityEmpty Activity

接著出現 New Android Activity 的視窗,這裡名稱改為 EncodeActivity

然後點擊右下角的 Finish 按鈕

這時候在專案路徑區就會出現新增的 EncodeActivity.javaencode_activity.xml 兩個檔案

回到 MainActivity.java ,這裡新增以下的程式碼

完整程式碼可以參考範例程式篇的 MainActivity.java

整理如下

Button button_start = (Button) findViewById(R.id.button_start);
button_start.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent main2ActivityIntent = new Intent(MainActivity.this, EncodeActivity.class);           
        startActivity(main2ActivityIntent);
    }
});

這裡變數 (variable) button_start 利用 findViewById() 方法 (method) 取得 id 設定為 button_start 的按鈕元件 (component) ,然後可以透過變數 button_start 操作這個按鈕

Button button_start = (Button) findViewById(R.id.button_start);

下一行, button_start 利用 setOnClickListener() 設定按鈕點擊事件 (event)

button_start.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent main2ActivityIntent = new Intent(MainActivity.this, EncodeActivity.class);           
        startActivity(main2ActivityIntent);
    }
});

注意,上面是直接在 setOnClickListener() 的小括弧中建立 View.OnClickListener() 物件,該物件則是直接用其後的大括弧定義內容,裡頭只定義一個標示為 @OverrideonClick() 方法

public void onClick(View v) {
    Intent main2ActivityIntent = new Intent(MainActivity.this, EncodeActivity.class);           
    startActivity(main2ActivityIntent);
}

這樣的定義方式稱為匿名內部類別 (anonymous inner class) 。

基本上在 Android App 切換頁面就是從現在的 Acticity 類別移動到另一個 Acticity 類別,這裡是利用 Intent 來進行,先建立 Intent 型態的變數 main2ActivityIntent

Intent main2ActivityIntent = new Intent(MainActivity.this, EncodeActivity.class);

Intent() 的第一個參數 (parameter) 為 MainActivity.this ,表示是現在的 class 檔案,第二個參數為要切換到的 class 檔案,我們的例子為 EncodeActivity.class

Intent 也可以帶值傳遞,也就是在不同的頁面間傳遞數值。

最後,呼叫 startActivity() ,並以 Intent 型態的 main2ActivityIntent 當參數,就會切換到 EncodeActivity.class 的頁面

startActivity(main2ActivityIntent);

好了,來試看看囉!首先在模擬器中開啟

按下開始編碼,就會移動到 EncodeActivity.class 的頁面

咦?空白的,這是因為我們還沒設置這個頁面,下一個單元來進行這個頁面的設計囉!

相關教學影片

上一頁 單元 29 - 首頁
回 Java 入門指南首頁
下一頁 單元 31 - 整合功能
回 Java 教材首頁
回程式語言教材首頁
中英文術語對照
anonymous inner class匿名內部類別
component元件
event事件
method方法
parameter參數
project專案
variable變數
參考資料
1. Android Developers | Start another activity
重點整理
1. Android Studio 中,新增新的 Activity 就會連帶新增對應的 XML 檔案。
2. Android App 可以利用 Intent 物件切換到不同的 Activity ,也就是不同的頁面。
問題與討論
1. 什麼是匿名內部類別?為什麼要使用匿名內部類別?
2. 如果不使用 Intent 物件的話,有其他的方式可以切換頁面嗎?
練習
1. 承接上一單元的 HelloAndroidDemo 專案,在 MainActivity.java 中利用 findViewById() 取得 ButtonTextView 的物件變數,並設定按下按鈕利用 setText() 改變 ButtonTextView 的文字。
2. 承接上一單元的 GuessAndroidDemo 專案,在 MainActivity.java 中利用 findViewById() 取得四個 Button 的物件變數,然後加入新的 Acrivity ,利用 Intent 物件與 putExtra() 方法傳遞數字到新的 Acrivity