用途:活动之间跳转;Intent是Android中组件之间交互的方式,不仅可以指明当前组件要想执行的动作,还可以在不同组件之间传递数据,一般用于启动活动,启动服务,发送广播
显式Intent:意图明显
修改FirstActivity中的点击事件
Button button1=findViewById(R.id.button);
//注册监听器,执行监听器中的onClick()方法
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//第一个参数指的是上下文,第二个参数指的是启动的目标活动
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
//启动活动的方法
startActivity(intent);
}
});
隐式Intent:他不明确指出我们想要启动哪一个活动,而是指定了一些列更为抽象的action和category等信息,交给系统分析并帮我们找出合适的活动去启动。
在<activity>
标签下配置<intent-filter>
内容,可以指定当前活动能够响应的action和category
<activity android:name=".SecondActivity">
<!--同时匹配才能响应-->
<intent-filter>
<!--<action>指明当前活动可以响应com.example.activitytest.ACYION_STRAT这个action-->
<action android:name="com.example.activitytest.ACTION_START"/>
<!--<category>包含一些附加信息,更精确的指明当前活动能够响应的Intent中还可能带有的category-->
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
修改FirstActivity中的点击事件
Button button=findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent("com.example.activitytest.ACTION_START");
startActivity(intent);
}
});
android.intent.category.DEFAULT是一种默认的category,在调用开启活动的方法时会自动将这个category添加到Intent中。
每个Intent只能指定一个action,可以指定多个category。
在Intent增加category
<activity android:name=".SecondActivity">
<!--同时匹配才能响应-->
<intent-filter>
<!--<action>指明当前活动可以响应com.example.activitytest.ACYION_STRAT这个action-->
<action android:name="com.example.activitytest.ACTION_START"/>
<!--<category>包含一些附加信息,更精确的指明当前活动能够响应的Intent中还可能带有的category-->
<category android:name="android.intent.category.DEFAULT"/>
<!--自定义category-->
<category android:name="android.intent.category.MY_CAGEGORY"/>
</intent-filter>
</activity>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent("com.example.app.ACTION_START");
intent.addCategory("android.intent.category.MY_CAGEGORY");
startActivity(intent);
}
});
}