两个this帮忙解释一下。

两个this帮忙解释一下。

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view=inflater.inflate(R.layout.fragment_score,container,false);
    final TextView  tvScore=(TextView)view.findViewById(R.id.tvScore);
     tvScore.setText(String.valueOf(this.mscore));//这个this
    Log.d(TAG, "onCreateView this: "+this);
    final Button btnAdd=view.findViewById(R.id.btnAdd);
    btnAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            tvScore.setText(String.valueOf(++ScoreFragment.this.mscore));//和这个this
            Log.d(TAG, "onClick Button this:"+this);
        }
    });
    return view;
}


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

第一个this,指的是ScoreFragment对象实例。第二个也是同样指的ScoreFragment对象实例。但第二个不能直接写成this,是因为它处于

http://img1.sycdn.imooc.com//climg/5c8a123b00012e4b05230253.jpg

一个内部类中,如果直接写成this就是默认的指这个内部类的对象,这个listener的对象,所以,需要写全。祝:学习愉快

  • 慕桂英0005993 提问者 #1
    两个this的hash码不一样啊,是不是就证明不是同一个this?
    2019-03-14 17:26:41
一切你都可以 2019-03-14 20:48:54

兄die 这两个都是一样的, . 你把他放在全局变量里头, 用this 就是表达我要用这个类的某一个变量.

private int num;

public void a(int num){

this.num =num;//就象这样子,this是要用使用这个类全局变量num

}

好帮手慕雪 2019-03-14 18:37:36

http://img1.sycdn.imooc.com//climg/5c8a2ea10001052806830258.jpg

这是在ScoreFragment类中吧?这两个是一样的。注意不是两个this哦。第二个是ScoreFragment.this哦。祝:学习愉快

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android数据通信开发与应用2018版
  • 参与学习           人
  • 提交作业       147    份
  • 解答问题       687    个

本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师