<Android编程权威指南>之1.6 Activity.this和this的区别

public class QuizActivity{
    ...
    mFalseButton.setOnClickListaner(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            Toast.makText(QuizActivity.this,
                R.string.correct_toast,
                Toast.LENGTH_SHORT).show();
        }
    });
    ...
}

原文说:

在makeText(…)里,传入QuizActivity实例作为Context的参数值.注意此处应输入的参数是QuizActivity.this,不要想当然的直接输入this作为参数.因为匿名类的使用,这里的this指的是监听器View.OnClickListener.

也就是说,直接在监听器View.OnClickListener里使用this,代表的是创建的这个匿名类,也就是实现了View.OnClickListener接口的一个类. QuizActivity.this是指向QuizActivity的一个实例.QuizActivity继承自Activity,Activity继承自Context.如下图所示:

而makeText的函数原型如下: static Toast makeText(Context context, int resId, int duration).

理论上说,如果View.OnClickListener匿名类继承自context,那么makeText(this,R.string.correct_toast,Toast.LENGTH_SHORT)从语法上来说就是正确的,但是View.OnClickListener只是一个接口,不会继承类.所以从语法上来说makeText(this,R.string.correct_toast,Toast.LENGTH_SHORT)是错误的.

再说makeText(QuizActivity.this,R.string.correct_toast,Toast.LENGTH_SHORT),刚才已经说了,QuizActivity.this是指向的QuizActivity的实例,QuizActivity最终继承了Context,所以这句话才是语法上正确的.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏james大数据架构

列表选择Spinner

1.只用XML配置来显示列表 在res\values中添加一个arrays.xml 1 <?xml version="1.0" encoding="utf-8...

20610
来自专栏向治洪

android drawable

android.graphics.drawable.Drawable是个虚类。 它的直接子类有 BitmapDrawable, ClipDrawable, Co...

20210
来自专栏项勇

笔记15 | 归纳总结Android动态设置TextView的颜色的四种方法

1644
来自专栏向治洪

android RecycleView Adapter简单封装

早些时候我们使用系统提供个的BaseAdapter的时候为了满足大家的需要,我们总会对BaseAdapter做一层上层的封装,然后对于实际业务我们只需要关心ge...

2798
来自专栏项勇

笔记42 | Android加载器Adapter的深入学习篇(一)

1474
来自专栏Android开发指南

8.快速索引、listview

3556
来自专栏Android开发指南

9.代码抽取(adapter)

2729
来自专栏我的博客

BaseAdapter简单用法

BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及Gri...

2794
来自专栏hbbliyong

Android中的AutoCompleteTextView的使用

最终的效果如下: ? main.xml代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm...

2728
来自专栏非著名程序员

偷懒新姿势,打造属于RecyclerView的万能适配器Adapter和ViewHolder

前言 昨天开始接触江湖口碑很好的RecyclerView,事实上,我已经被她的强大所征服了!资源回收,数据绑定,布局显示,分割线,Item动画多个模块高度解耦...

2516

扫码关注云+社区