Android中的显隐式Intent

来源:互联网 发布:淘宝如何看买家的评价 编辑:程序博客网 时间:2024/06/18 18:22

Android中Intent常用来调用启动不同的Activity,分为显式和隐式Intent,其实很简单,即在调用Intent时,在其构造函数中直接传递主Activity和要跳转的Activity就属于显式Intent,而没有指定Activity,通过制定一个Action和Category的方式启动另一个Activity的方式称为隐式Intent。下面通过一个实例来演示:

AndroidManifest配置:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.renkai.intenttest">    <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=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <!--该activity未设置任何的intent-filter,用显式的方式来显示这个activity-->        <activity android:name=".AnotherAty" android:label="AnotherAty"/>        <!--该Activity中定义了两个intent-filter,其中第二个intent-filter中定义了两个category-->        <activity android:name="BthAty" android:label="BthAty"            android:icon="@mipmap/ic_launcher">            <intent-filter>                <action  android:name="myaction1"/>                <category android:name="android.intent.category.DEFAULT"/>            </intent-filter>            <!--这个intent-filter与MyAty中的intent-filter相同-->            <intent-filter>                <action android:name="myaction2"/>                <category android:name="android.intent.category.DEFAULT"/>                <category android:name="mycategory"/>            </intent-filter>        </activity>        <activity android:name="MyAty" android:label="MyAty">            <intent-filter>                <action android:name="myaction2"/>                <category android:name="android.intent.category.DEFAULT"/>                <category android:name="mycategory"/>            </intent-filter>        </activity>    </application></manifest>
其中,Bth和MyAty均是定义了action和category,而AnotherAty并没有定义这两个,接下来,分别通过显式和隐式来调用。

Main部分代码:

public void onClick(View v) {        Intent intent = null;        switch (v.getId()){            case R.id.btn1:                intent = new Intent(this,AnotherAty.class);                startActivity(intent);                break;            case R.id.btn2:                intent = new Intent("myaction1");//利用定义的action来启动                startActivity(intent);                break;            case R.id.btn3:                intent = new Intent("myaction2");//通过action和category来启动。                intent.addCategory("mycategory");                startActivity(intent);                break;            default:                break;        }   }



0 0