--- ###### tags: `Android studio` --- [TOC] Android studio-頁面轉換 === 實作 --- ### 第一步 ●首先需要在新增一個Activity 在project的位置點擊右鍵,之後再New>>Activity>>點選Empty Activity ![](https://i.imgur.com/wCoI0Fw.jpg) ### 第二步 ●點擊Empty Acvivity後會出現↓以下頁面↓直接按Finish可以 ![](https://i.imgur.com/63D2mec.jpg) ### 第三步 ●接下來開啟MainActivity.java的檔案在app>>java>>com.example.....>>點擊開啟MainActivity.java 在public class MainActivity extends AppCompatActivity {裡面加入 ``` public void click(View view) { Intent it new Intent(MainActivity.this,Main2Activity.class); startActivity(it); finish(); } ``` } !!現紅字為沒匯入Library"滑鼠移到紅字會出現提示"Alt+Enter"會自動加上宣告!! <style> .red { color:#FF0202; } </style> **<span class="red">最後須有"}"</span>** ↓下圖為示例↓ ![](https://i.imgur.com/kqgBJDT.jpg) ### 第四步 ●接下來開啟activity_main.xml檔案在app>>res>>layout>>點選activity_main 開啟檔案後從旁邊元件欄位把"Button"拖曳至版面 接下來在旁邊Attributes裡的Declared Attributes旁邊的"+" 在新增的欄位打上"onClick"選擇android:onClick 然後"點擊"旁邊的欄位會出現下拉式選單>>選擇click ![](https://i.imgur.com/3ogWP9e.jpg) ### 第五步 ●接下來開啟剛開始新增的Activity(預設名稱Main2Activity<可能會因為版本不同導致預設的名字不一樣>) 試著做跟前面的MainActivity.java一樣的動作(第三步) 在public class Main2Activity extends AppCompatActivity {裡面加入 ``` public void click2(View view) { Intent it new Intent(Main2Activity.this,MainActivity.class); startActivity(it); finish(); } ``` } 不同的是 public void click2(View view) Intent(Main2Activity.this,MainActivity.class); !!現紅字為沒匯入Library"滑鼠移到紅字會出現提示"Alt+Enter"會自動加上宣告!! ![](https://i.imgur.com/KI7vMvX.jpg) ### 第六步 ●最後在剛開始新增的activity_main2.xml做跟前面Activity_main.xml一樣的動作(第四步) ![](https://i.imgur.com/h88a60T.jpg) 程式碼解析 --- ### Activity ``` package com.example.changepage; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void click(View view) { Intent it = new Intent(MainActivity.this,MainActivity2.class); startActivity(it); finish(); } } ``` <style> .purple { color:#7A0099; } </style> package com.example;<span class="purple">這一行的作用是指出這個檔案所在的命名空間,package(套件)是關鍵字,如果我們寫了一個java檔案,其他的檔案要引用到他的class或class內的方法,就需要</span> ``` import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; ``` <span class="purple">程式中預設導入這兩個套件,幾乎所有的Android應用程式都會用到這兩個套件, Android平臺支援的package主要因為手機系統特性與程式碼授權的考量,與標準版的Java支援的package不盡相同。在設計Android應用程式時,常常需要參考可用的API列表,完整的API可以查閱官方支援的package列表 https://developer.android.com/reference/packages</span> public class MainActivity extends AppCompatActivity{}<span class="purple">MainActivity是這個類別的名稱,extends表示MainActivity這個類別的功能、型別等全繼承自AppCompatActivity類別。 整句話的意思是 宣告一個公開的MainActivity類別。這個MainActivity類別繼承了程式開頭導入的AppCompatActivity類別。</span> protected void onCreate(Bundle savedInstanceState){}<span class="purple">onCreate是這個方法的名稱,void表示不需任何回傳值,這個方法導入了一個名為savedInstanceState(儲存實體狀態)的Bundle型別參數,Bundle型別正是我們前面所導入的package之一,Bundle的內容與Android手機平臺的記憶體管理有關。 Bundle類別可以保存Activity上一次關閉(stop)時的狀態,我們可以透過覆載onStop方法來保存關閉前的狀態,當程式啟動時,會再次呼叫onCreate方法,就能從savedInstanceState中得到前一次凍結的狀態。 我們也可以透過Bundle來將這個Activity的內容傳到下一個Activity中</span> super.onCreate(savedInstanceState);<span class="purple">super是關鍵字,代表這個MainActivity類別的上層類別AppCompatActivity,意思是執行AppCompatActivity類別中onCreate方法的內容,一個Android應用程式,會對應到一個以上的Activity,onCreate方法是每個Activity類別初始化時都會去呼叫的方法。我們想做的是保持原本onCreate方法預設的動作,然後在其中加入我們想要的內容。 因為我們已經覆載(@Override)了MainActivity類別的onCreate方法,因此如果我們想將原本的onCreate方法內容保留,再加上我們自己的內容,就要使用super語句,並傳入savedInstanceState參數。如此就會先執行AppCompatActivity類別的onCreate方法,再執行我們覆載的onCreate方法裡面的其他程式內容。</span> setContentView(R.layout.activity_main);<span class="purple">螢幕顯示的畫面,是透過各種介面元件的排列配置結構來描述的。要將一套版面配置的層次結構轉換到一個螢幕上時,Activity會呼叫它用來設定螢幕顯示內容的setContentView方法,並傳入定義了版面配置的Xml描述檔。當Activity被啟動並需要顯示到螢幕上時,系統會通知Activity並根據引用的Xml檔來描繪出使用者介面。</span> public void click(View view){}<span class="purple">建立一個沒有回傳值的公開函數名字取為click(可以取別的名字)</span> [Intent](/M7FUNQzESpeAEzZNu4FJhA) it = new Intent(MainActivity.this,MainActivity2.class);<span class="purple">這行是 ``` Intent it = new Intent(); it.setClass(MainActivity.this , MainActivity2.class); ``` <span class="purple">的簡化版第一行Intent intent = new Intent();是將Intent物件初始化,第二行intent.setClass(MainActivity.this , MainActivity2.class);是使用setClass方法來設定你要前往的Activity。 setClass要丟入兩個參數(第一頁,第二頁) 假設你要從A頁到B頁 就必須輸入 intent.setClass(A.this , B.class);</span> startActivity(it); <span class="purple">開始跳往要去的Activity</span> finish();<span class="purple">結束目前Activity</span>