1. 程式人生 > >使用Intent在活動之間穿梭

使用Intent在活動之間穿梭

int 點擊事件 vertica version android ins http line lns

使用Intent在活動之間穿梭

1.在com.example.activitytest中創建第二個活動SecondActivity:

/**
 * 第二個活動
 */
public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);
    }
}

創建完成後會自動生成second_layout.xml,這裏我們進行修改如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/button_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 2"
        />
</LinearLayout>

這時AndroidManifest.xml已經幫我們註冊了活動:

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".FirstActivity"
            android:label="this is first">
            <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>

2.使用Intent啟動活動

Intent是Android中各組件進行交互的一種重要方式,它不僅可以指明當前組件想要執行的動作,還可以在不同組件之間傳遞數據.

Intent大致可以分為兩種:顯示Intent和隱式Intent

一.顯式Intent

Intent中有多個構造函數的重載,其中一個Intent(Context packageContext,Class<?> cls),這個構造函數第一個參數是啟動活動的上下文,第二個啟動活動的目標.

            //啟動第二個活動
            public void onClick(View v) {
            //FirstActivity.this 指上下文 SecondActivity.class指活動目標
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                startActivity(intent);
            }

二.隱式Intent

通過<activity>標簽下配置<intent-filter>的內容,可以指定當前活動能夠響應的action和category,

打開AndroidManifest.xml,添加如下代碼:

 <activity android:name=".SecondActivity">
       <intent-filter>
           <action android:name="com.example.activitytest.ACTION_START" />
           <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
 </activity>

修改FirstActivity中按鈕的點擊事件:

 //隱式使用Intent
            public void onClick(View v) {
                Intent intent = new Intent("com.example.activitytest.ACTION_START");
                startActivity(intent);
            }

可以選擇添加多個category:

//隱式使用Intent
            public void onClick(View v) {
                Intent intent = new Intent("com.example.activitytest.ACTION_START");
                intent.addCategory("com.example.activitytest.MY_CATEGORY");
                startActivity(intent);
            }

打開AndroidManifest.xml,添加如下代碼:

<activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="com.example.activitytest.ACTION_START" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="com.example.activitytest.MY_CATEGORY" />
            </intent-filter>
        </activity>

3.Intent的其他使用方法

跳轉第三方鏈接

//跳轉第三方鏈接
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("https://www.baidu.com"));
                startActivity(intent);
            }

調用撥號功能

//調用撥號功能
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:10086"));
                startActivity(intent);
            }

使用Intent在活動之間穿梭