Intent被称为意图,是程序中各组件间进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。一般用于启动Activity、Service以及发送广播等。
Intent根据开启目标组件的方式不同分成两种类型:
1.显式Intent
2.隐式Intent
显式Intent
显式Intent 指的是直接指定目标目标组件,如:
Intent intent=new Intent(this,SecondActivity.class);
startActivity(intent);
为创建Intent的传入了两个参数,第一个参数this表示当前的Activity,第二个参数表示为跳转目标的Activity。
直观点,上手做一做。
先创建一个android项目,在自己java/com.example包中创建第二个Activity文件,名字自己喜欢,认得出来就好。
如图我自己写的程序中,先创建一个Intent对象,参数设置
( this,Main2Activity.class)
this即为当前的这个Activity
Main2Activity.class即为我们新创建的第二个Activity,同时也是我们想跳转到的Activity
隐式Intent
隐式Intent 不会明确指出需要激活的目标组件,它被广泛地应用在不同应用程序之间传递消息。
Android系统会使用IntentFilter匹配相应的组件,匹配的属性有三个:
属性 | 释义 |
---|---|
action | 表示Intent对象要完成的动作 |
data | 表示Intent对象中传递的数据 |
category | 表示为action添加的额外信息 |
使用隐式Intent开启Activity需要在清单文件去配置这三个属性,如:
在当前的Activity文件中创建一个Intent对象,为这个对象设置action属性为cn.itcast.START_ACTIVITY
最后再加一个开启代码startActivity(intent);
这时候需要去清单文件去配置你想跳转到的Activity文件,即Main2Activity.java。
<activity android:name=".Main2Activity">
<intent-filter>
<action android:name="cn.itcast.START_ACTIVITY"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
在<intent-filter>
标签中把action配置为和MainActivity.java中的action一样。
下一行category这行,写的原因是在使用隐式Intent开启Activity时,会默认为该Intent对象添加category。默认配置的内容就是这行android.intent.category.DEFAULT
,这里设置好,应该运行就能完成隐式Intent的跳转。
想要效果明显点,一看就知道跳转到了其他Activity就在视图文件下加入一些文本或者其他的东西,我就选择加了一点字来分辨:
End.