Android中的显隐式Intent

本文详细介绍了Android中Intent的使用方法,包括显式和隐式Intent的区别,并通过实例展示了如何配置AndroidManifest文件以及如何在代码中调用Intent来启动不同的Activity。

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;
        }
   }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值