Java 入門指南
單元 30 - 換頁
Android App 要增加新的頁面就要增加新的 Activity ,加入新的 Activity ,在專案 (project) 上點擊滑鼠右鍵,利用快選選單依下圖 New → Activity → Empty Activity
接著出現 New Android Activity 的視窗,這裡名稱改為 EncodeActivity
然後點擊右下角的 Finish 按鈕
這時候在專案路徑區就會出現新增的 EncodeActivity.java 與 encode_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() 物件,該物件則是直接用其後的大括弧定義內容,裡頭只定義一個標示為 @Override 的 onClick() 方法
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 的頁面
咦?空白的,這是因為我們還沒設置這個頁面,下一個單元來進行這個頁面的設計囉!
相關教學影片
中英文術語對照 | |
---|---|
anonymous inner class | 匿名內部類別 |
component | 元件 |
event | 事件 |
method | 方法 |
parameter | 參數 |
project | 專案 |
variable | 變數 |
重點整理 |
---|
1. Android Studio 中,新增新的 Activity 就會連帶新增對應的 XML 檔案。 |
2. Android App 可以利用 Intent 物件切換到不同的 Activity ,也就是不同的頁面。 |
問題與討論 |
---|
1. 什麼是匿名內部類別?為什麼要使用匿名內部類別? |
2. 如果不使用 Intent 物件的話,有其他的方式可以切換頁面嗎? |
練習 |
---|
1. 承接上一單元的 HelloAndroidDemo 專案,在 MainActivity.java 中利用 findViewById() 取得 Button 及 TextView 的物件變數,並設定按下按鈕利用 setText() 改變 Button 及 TextView 的文字。 |
2. 承接上一單元的 GuessAndroidDemo 專案,在 MainActivity.java 中利用 findViewById() 取得四個 Button 的物件變數,然後加入新的 Acrivity ,利用 Intent 物件與 putExtra() 方法傳遞數字到新的 Acrivity 。 |