Android Activity之間的跳轉
阿新 • • 發佈:2018-11-17
- Activity之間的跳轉需要用到Intent(意圖)元件,通過Intent可以開啟新的Activity實現介面跳轉功能。
- Intent被稱為意圖,是程式中各元件進行互動的一種重要方式,它不僅可以指定當前元件要執行的動作,還可以在不同元件之間進行資料傳遞。根據開啟目標元件的方式不同,Intent被分為顯式意圖和隱式意圖兩種型別。
顯式意圖:
顯式意圖可以直接通過名稱開啟指定的目標元件,通過其構造方法Intent(Context packageContext , Class<?> cls)來實現,第一個引數為Context表示當前的Activity物件,第二個引數Class表示要啟動的目標Activity,通過這個方法建立一個Intent物件,然後將該物件傳遞給Activity的startActivity(Intent intent)方法即可啟動目標元件。示例程式碼如下:
//從當前頁面跳轉到Activity02介面 Intent intent = new Intent(this,Activity02.class); //建立Intent物件 startActivity(intent); //開啟Activity02
隱式意圖:
隱式意圖相比顯示意圖來說更為抽象,它並沒有明確指定要開啟哪個目標元件,而是通過指定action和category等屬性資訊,系統根據這些資訊進行分析,然後尋找目標Activity。其示例如下:
Intent intent = new Intent(); //設定action動作,該動作要和清單檔案中設定的一樣 intent.setAction("cn.START_ACTIVITY"); startAvtivity(intent);
上述程式碼中,只指定了cation,並沒有指定category,這是因為在目標Activity的清單檔案中配置的category只是一個預設值,在呼叫startActivity()方法時,自動將這個category新增到Intent中。接下來還需要在目標Activity的清單檔案中配置 ,指定當前Activity能夠響應的action和category,示例程式碼如下:
<activity android:name="cn.Activity02"> <intent-filter> <action android:name="cn.START_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
在清單檔案中,目標元件Activity02指定了可以響應的<action>和<category>資訊,只有當action和category屬性與目標元件設定的內容相同時,目標元件才會被開啟。需要注意,每個Intent只能指定一個cation,卻能夠指定多個category。