关于android开发(java开发)中this的问题
GridViewgridview=(GridView)findViewById(R.id.gridview);gridview.setAdapter(newImageAd...
GridView gridview =(GridView) findViewById(R.id.gridview);
gridview.setAdapter(newImageAdapter(this));
总被this的指代搞晕。。想问一下代码第二行的this指什么? 展开
gridview.setAdapter(newImageAdapter(this));
总被this的指代搞晕。。想问一下代码第二行的this指什么? 展开
3个回答
展开全部
通俗讲,this指本类,如:
public class Main extends Activity {
。。。
GridView gridview =(GridView) findViewById(R.id.gridview);
gridview.setAdapter(newImageAdapter(this));
。。。
}
代码第二行的this指Main.this
Android很多控件运行是有条件的,就是所谓的运行环境,就是Context(上下文),Context就是一系列环境变量,控件的运行是基于这些变量的。
我也是花很多时间才真正体会到this,Context概念的,这个概念非常重要,慢慢体会吧。
public class Main extends Activity {
。。。
GridView gridview =(GridView) findViewById(R.id.gridview);
gridview.setAdapter(newImageAdapter(this));
。。。
}
代码第二行的this指Main.this
Android很多控件运行是有条件的,就是所谓的运行环境,就是Context(上下文),Context就是一系列环境变量,控件的运行是基于这些变量的。
我也是花很多时间才真正体会到this,Context概念的,这个概念非常重要,慢慢体会吧。
追问
感谢你的回答!
再追问一个问题。context传进去的究竟是什么??一堆环境变量?
追答
补充:
以上例为例,this是指本类,是指Main.this,什么意思呢?Main继承Activity,自然就继承Activity的属性(变量和方法),同时,Android系统也为Activity的创建设置很多的变量和方法(可以不必深究这些变量和方法是什么,若要查看context的变量和方法,context.(Alt+/),这些变量和方法就是运行环境,this真正的含义就是指这些运行环境(这些变量和方法)。另外,在android里只有activity和service里提供了context的实现。
关于Context的内容可参见SDK 随机文档,就在你的硬盘中,X:/android-sdk/docs/reference/android/content/Context.html
再举一例,说明this和context关系:
展开全部
你好!
首先gridview.setAdapter(new ImageAdapter(this));这句话可以理解为向你定义的GridView控件里面添加ImageAdapter里面绑定的数据。
而new ImageAdapter(this) 是为了得到ImageAdapter的实例,并需要向构造函数传入一个Context类型的变量。 this就是你当前类的引用(对象)。 你可以看下你的代码会发现当前类是继承自Activity的,Activity正好就是Context的子类。 由于面向对象的多态,这里就可以把你当前类的引用(对象)传进入。
希望我的回答对你有帮助!
首先gridview.setAdapter(new ImageAdapter(this));这句话可以理解为向你定义的GridView控件里面添加ImageAdapter里面绑定的数据。
而new ImageAdapter(this) 是为了得到ImageAdapter的实例,并需要向构造函数传入一个Context类型的变量。 this就是你当前类的引用(对象)。 你可以看下你的代码会发现当前类是继承自Activity的,Activity正好就是Context的子类。 由于面向对象的多态,这里就可以把你当前类的引用(对象)传进入。
希望我的回答对你有帮助!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先this代表本类的一个引用,
this.*表示调用本类的某个方法,这个时候通常可以省略this;但在内部类中不能省略,否则编译器会认为是内部类的引用,所以要在this前加上类名
*.this表示本类的引用,通常前面的*是用本类的名字表示,当然也可以省略,但是如果是在内部类中一定要加上类名.
this.*表示调用本类的某个方法,这个时候通常可以省略this;但在内部类中不能省略,否则编译器会认为是内部类的引用,所以要在this前加上类名
*.this表示本类的引用,通常前面的*是用本类的名字表示,当然也可以省略,但是如果是在内部类中一定要加上类名.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询