intent.setclass的一个误解

来源:互联网 发布:js 数组 empty 编辑:程序博客网 时间:2024/05/29 13:25

一般我们启动一个新的activity可能会这样写

Intent intent=new Intent();

intent.setclass(aa.this,bb.class);

startActivity(intent);

以前我一直以为第一个参数是当前activity类的运行时信息;其实不是。两个参数都是跟要启动的activity有关的。

setclass的第一个参数是Context类型,一个Context实例包含了程序运行的所有信息;

具到在setclass方法中主要是需要bb类的包的信息;只有包名加类名才能唯一确定一个类;如果当前的aa类和 bb类都在一个包中这段程序没问题;如果不在一个保包中上述程序就会出现异常;

如果aa 和bb不在一个包中该怎么办呢?

可以使用Context c = createPackageContext("com.dolphin.demo"(包名), Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY(标志位)方法构造一个,或者使用intent.setClassName (String , String )指定包名和类名。


0 0
原创粉丝点击