初识安卓开发之Intent(一)- 显示和隐式Intent

  • Intent是什么?
    简单地说,intent是安卓程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
    Intent可以简单地分成显式Intent和隐式Intent。

  • 显式Intent
    显式Intent中,其中一个构造函数的重载是Intent(Context packageContext, Class<?> cls) ,前者是要启动活动的上下文,后者是被启动的目标活动。
    假设我们有两个活动: FirstActivity, SecondeActivity, 分别有两个按钮,命名为button1 和button 2

//FirstActivity 点击按钮button启动SecondActivity
button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
                startActivity(intent);//Activity类的内建函数,用于执行intent
            }
            });
  • 隐式Intent
    隐式Intent并不指定要启动什么活动,而是指定了一些列更为抽象的action和category信息,由系统来判断执行什么Intent,而只有<action>和<category>中的内容能够同时匹配Intent中指定的action和category时,这个活动才能响应Intent。
    在AndroidMainfest.xml中指定将要响应的action和category:
<activity
            android:name=".SecondActivity"
            android:launchMode="singleInstance">
            <intent-filter>
                <action android:name="com.example.linhualuo.activitytest.ACTION_START" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

修改button1的点击事件:

button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.example.linhualuo.activitytest.ACTION_START");
                startActivity(intent);//
            }
        });

现在点击button1就可以启动SecondeActivity啦
实际上,每个Intent只能指定一个action,但是可以指定多个category,对AndroidMainfest.xml进行修改:

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

然后在button1的点击事件里面调用Intent的addCategory()方法,可以添加指定的category:

button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.example.linhualuo.activitytest.ACTION_START");
                intent.addActivity("com.example.linhualuo.activitytest.MY_CATEGORY");
                startActivity(intent);
            }
        });

这样就可以实现启动SecondActivity啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值