Android Studio中Intent的用法3-2

《Android Studio中Intent的用法1》中提到,Intent(意图)可以用来产生新的Activity。在使用Intent来产生新的Activity时,可以使用两种方法:显式Intent和隐式Intent。显式Intent方式指定了要产生的Activity;而隐式Intent方式则没有指定要产生的Activity,由安卓系统根据指定的信息决定产生哪个Acitivty。

1 显式Intent方式

可以使用两种方式实现显式Intent,一种是通过Intent的构造方法实现,另一种是通过Intent的方法实现。

1.1 通过Intent的构造方法实现

1.1.1 构造方法介绍

Intent类的构造方法有一种类型是

​
public Intent(Context packageContext, Class<?> cls)

​

其中,第一个参数是Context类的对象,表示使用该Intent的类的应用包上下文;第二个参数表示用于Intent的组件类。Intent类的这种构造方法,就是为指定的组件类cls创建了一个Intent。

相关链接1 Context类:也就是上下文类。“上下文”可以看成是当前对象在程序中所处的环境,一个用户与系统交互的过程。用户和操作系统的每一次交互都是一个场景,例如打电话、发短信,这些都是一个场景。把这种场景就抽象为Context类。

相关链接2 Class<?>:Class<T>表示T对应的类,而Class<?>表示类型不确定的类。

1.1.2 代码实现

使用Intent的构造方法实现显示Intent的代码如图1所示。

图1 构造方法实现显式Intent

其中,使用了“1.1.1 构造方法介绍”中提到的构造方法创建了Intent类的对象,并通过startActivity()创建了指定了Activity,即Main2Activity类对应的活动。

1.2 通过Intent类的方法实现

可以通过Intent类的setComponent()方法或者setClass()/setClassName()方法实现显式Intent。

1.2.1 通过setComponent()方法实现

setComponent()方法的作用是指定组件来处理Intent。该方法的格式如下所示。

​
public Intent setComponent(ComponentName component)

​

其中,参数component是ComponentName类的对象,表示指定的用来处理Intent的组件,如果该参数是null,则表示由系统指定一个组件。

通过setComponent()方法实现显式Intent的代码如图2所示。

图2 setComponent()方法实现显式Intent

 其中,图2①定义了ComponentName类的对象cn,该类的构造方法的两个参数,与“1.1.1 构造方法介绍”中介绍的两个参数含义相同;图2②通过setComponent()方法设置了处理intent的组件,最后调用startActivity()方法产生Main2Activity活动。

1.2.2 setClass()/setClassName()方法实现

setClass()/setClassName()的作用是设置类。其中setClass()方法的格式为

​
public Intent setClass(Context packageContext,Class<?> cls)

​

该方法的参数与“1.1.1 构造方法介绍”中介绍的两个参数含义相同。使用setClass()方法实现显式Intent的代码如图3所示。

图3 setClass()方法实现显式Intent

 setClassName()方法的格式为

​
public Intent setClassName(String packageName,String className)

其中,第一个参数是String类型,表示使用该Intent的类的包名字;第二个参数表示产生的活动对应的类名字。使用setClassName()方法实现显式Intent的代码如图4所示。

图4 setClassName()方法实现显式Intent

 其中,图4①中的getPackageName()方法的作用是获取当前类的包名;“com.example.myapplication.Main2Activity”是活动Main2Activity的绝对路径,“com.example.myapplication”是Main2Activity所在的包名,如图5所示。

图5  Main2Activity所在的包

 需要注意的是,setClassName()方法的第二个参数必须使用Main2Activity的绝对路径,而不能只使用类名“Main2Activity”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值