[Android] 多Activity的建立註冊以及相互切換基礎(1)
阿新 • • 發佈:2019-01-28
今天學習了建立第二個Activity 以及從Main_Activity切換到Second_Activity
下面是關於這個過程的一個總結:
- 建立一個新的xml佈局檔案,(res>layout)寫好佈局類容
- 建立一個新的Activity類(Class)(src>SecondActivity.java)
- 在Manifest檔案中對新建立的Activity進行註冊
現在對建立新的Activity類的方法進行說明:
首先建立新的Activity類,在Eclipse中創建出來的java檔案就是一個普通的類,所以我們要把新建立的SecondActivity 類繼承Activity 類:
public class SecondActivity extends Activity{} public class SecondActivity extends ActionBarActivity{} 說明:extends Activity 和 extends ActionBarActivity 都是可以的,目前而言我認為ActionBarActivity 是Activity的一個子類,作用估計是主題樣式的不同
然後要重寫(override)SecondActivity 裡面的 onCreate 方法, (Source > Override or implements methods..選擇需要的方法,只有一個onCreate()方法)
public class SecondActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //以上是系統自動生成的 setContentView(R.layout.second); // setContentView ()是用來繫結需要顯示的Activity 的方法 // R.layout.second 就是在res >layout 裡面新建的xml檔名 // 以上就是繫結好了的一個Activity } } setContentView(View view)
然後是在manifest.xml檔案裡面對新建的Activity進行註冊
<activity android:name=".SecondActivity" android:label="Second"> </activity> 說明:android:name=""的值是包名.新建立的SecondActivity類名(注意大小寫) label是在左上角顯示的標籤 以下是MainActivity的註冊程式碼 <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 其中的<intent-filter></intent-filter>是控制程式的預設入口的子標籤
然後是從MainActivity通過點選button切換到SecondActivity
- 宣告button物件,然後再button=(Button)findViewById(R.id.button);進行繫結
- 宣告Onclick監聽類,生成監聽物件
- button繫結監聽物件
下面是最為重要的ButtonOnclickListener類裡面的方法的重寫,在這裡面實現Activity 的切換
class ButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent =new Intent();
//Intent 是一個意向類,用它實現對Activity之間的切換
//setClass 的第一個引數是一個Context物件
//Context 是一個類,Activity是Context的子類,也就是說,所有的Activity物件都可以向上轉型為Context對像
//SetClass 的第二個引數是一個Class物件,在當前場景下,應該傳入的是需要啟動的Activity的Class物件
intent.setClass(MainActivity.this, SecondActivity.class);
//MainActivity.this 呼叫的是外部類的物件
startActivity(intent);
//startActivity(intent)方法直接呼叫即可
}
}