- Activity之间的跳转需要用到Intent(意图)组件,通过Intent可以开启新的Activity实现界面跳转功能。
- Intent被称为意图,是程序中各组件进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。根据开启目标组件的方式不同,Intent被分为显式意图和隐式意图两种类型。
显式意图:
显式意图可以直接通过名称开启指定的目标组件,通过其构造方法Intent(Context packageContext , Class<?> cls)来实现,第一个参数为Context表示当前的Activity对象,第二个参数Class表示要启动的目标Activity,通过这个方法创建一个Intent对象,然后将该对象传递给Activity的startActivity(Intent intent)方法即可启动目标组件。示例代码如下:
//从当前页面跳转到Activity02界面 Intent intent = new Intent(this,Activity02.class); //创建Intent对象 startActivity(intent); //开启Activity02
隐式意图:
隐式意图相比显示意图来说更为抽象,它并没有明确指定要开启哪个目标组件,而是通过指定action和category等属性信息,系统根据这些信息进行分析,然后寻找目标Activity。其示例如下:
Intent intent = new Intent(); //设置action动作,该动作要和清单文件中设置的一样 intent.setAction("cn.START_ACTIVITY"); startAvtivity(intent);
上述代码中,只指定了cation,并没有指定category,这是因为在目标Activity的清单文件中配置的category只是一个默认值,在调用startActivity()方法时,自动将这个category添加到Intent中。接下来还需要在目标Activity的清单文件中配置 ,指定当前Activity能够响应的action和category,示例代码如下:
<activity android:name="cn.Activity02"> <intent-filter> <action android:name="cn.START_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
在清单文件中,目标组件Activity02指定了可以响应的<action>和<category>信息,只有当action和category属性与目标组件设置的内容相同时,目标组件才会被开启。需要注意,每个Intent只能指定一个cation,却能够指定多个category。
原文地址:https://www.cnblogs.com/liyuefu2034/p/9971574.html
时间: 2024-10-12 02:47:22