我想再安卓程序中的一个activity中关闭另一个activity。 我知道可以这样:
public class A_activity extends Activity { public static A_activity mc= null; protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); ..... mc = this; //疑惑的地方 } } public class B_activity extends Activity { protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); A_activity.mc.finish(); } }
我的疑惑是为什么mc = this; 这一句话要在onCreate方法中定义, 这里的this指代的是什么呢??
在其他地方定义会怎么样? 期待您的解答!
晕, 我发的时候格式还是正常的,发上去怎么成这样了。。 简单的程序, 应该不会影响各位大侠们阅读。。。 先拜谢了!
问题解答:
"mc=this"."this"指的就是该类的实例(也叫做类的对象)。在这里的意思就是在变量mc中存储下"A_activity"的引用,然后在B_Activity中才可调用其的finish()方法。
不一定非得在onCreate里面定义,也可在自定义的方法中定义,意义是一样的。
这不是一个android的特性,而是Java语言的一个特性,"this"关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。
可参考下《Java编程思想》中"this关键字"这一节。
追问这样啊, 就是说this通常是指代当前的类对象?
那么这一句: Intent(this,xxx.class);
就是在用类名显示跳转的时候, setClass的第一个参数不是应该是包名吗? 这里的this指什么呢?
回答Intent setClass (Context packageContext, Class<?> cls)
API中,第一个参数不是包名,而是一个Context类型,而Activity是继承Context的。那“this”代表的就是当前的Activity。