如何使用顯式 Intent

不管你想創建多少個活動,方法都和上一篇文章中介紹的是一樣的。唯一的問題在於,你在啓動器中點擊應用的圖標只會進入到該應用的主活動,那麼怎樣才能由主活動跳轉到其他活動呢?我們現在就來一起看一看。

Intent 介紹

Intent 是 Android 程序中各組件之間進行交互的一種重要方式,它不僅可以指明當前組件想要執行的動作,還可以在不同組件之間傳遞數據。Intent 一般可被用於啓動活動、啓動服務、以及發送廣播等場景。

Intent 的用法大致可以分爲兩種,顯式 Intent 和隱式 Intent。

使用顯式 Intent

現在快速地在 ActivityTest 項目中再創建一個活動。新建一個 second_layout.xml 佈局文件,代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_second"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="pub.weber.bym.activitytest.SecondActivity">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button_2"
        android:text="Button2"/>
</LinearLayout>

我們還是定義了一個按鈕,按鈕上顯示 Button 2 。然後新建 活動 SecondActivity 繼承 Activity ,代碼如下:

package pub.weber.bym.activitytest;

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Window;

public class SecondActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_second);
    }
}

最後在 AndroidManifest.xml 中爲SecondActivity 進行註冊。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="pub.weber.bym.activitytest">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="第一個程序">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SecondActivity">
        </activity>
    </application>
</manifest>

由於 SecondActivity 不是主活動,因此不需要配置 <intent-filter> 標籤裏的內容。

Intent有多個構造函數的重載,其中一個是 Intent(Context packageContext, Class<?> cls)。這個構造函數接收兩個參數,第一個參數 Context 要求提供一個啓動活動的上下文,第二個參數 Class 則是指定想要啓動的目標活動,通過這個構造函數就可以構建出 Intent 的“意圖”。

Activity 類中提供了一個 startActivity()方法,這個方法是專門用於啓動活動的,它接收一個Intent參數,這裏我們將構建好的Intent傳入startActivity()方法就可以啓動目標活動了。

修改 MainActivity 中按鈕的點擊事件,代碼如下所示:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
        startActivity(intent);
    }
});

首先構建出了一個 Intent ,傳入 MainActivity.this 作爲上下文,傳入 SecondActivity.class 作爲目標活動,在 FirstActivity 這個活動的基礎上打開 SecondActivity 這個活動。然後通過 startActivity() 方法來執行這個 Intent。

運行程序,在 MainActivity 的界面點擊一下按鈕,結果如圖所示:

可以看到,我們已經成功啓動 SecondActivity 這個活動了。如果你想要回到上一個活動怎麼辦呢?很簡單,按下 Back 鍵就可以銷燬當前活動,從而回到上一個活動了。

by web開發者 from http://weber.pub/

本文地址: http://weber.pub/安卓筆記5-如何使用顯式-intent/291.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章