为了账号安全,请及时绑定邮箱和手机立即绑定

loginButton.setOnClickListener(this);这里为什么要用this呢?

我有点不理解为什么这里用一个this就调用了onClick这个方法呢?

正在回答

5 回答

一般来说,android中的接口回调有3中。

1、 主程序回调

默认的这种this,结果就是 在 Activity 后面 跟了个  implements OnClickListener,然后根据提示,会自动在下面出现一个新的方法 onclick(),是单独的一个方法。

2、内部类格式的

mybtn.setOnClickListener(     后面 写个new  再用快捷键自动补全,会形成

mybtn.setOnClickListener(new View.OnClickListener() {

然后 工具又会自动补全为,

mybtn.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {

   }
});

3、自定义接口

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   mybtn = (Button) findViewById(R.id.id_btn);
   mybtn.setOnClickListener(new myClick());
}


public class myClick implements View.OnClickListener {

   @Override
   public void onClick(View v) {
       
   }
}


最后,学android必须要有java基础。

0 回复 有任何疑惑可以回复我~
#1

baobao9888 提问者

非常感谢!
2015-12-17 回复 有任何疑惑可以回复我~

为什么就这么简单的this,就能调用onClick了?而且还不用带后面的参数。太神奇了。

0 回复 有任何疑惑可以回复我~
#1

lynhao

建议可以先学java,学习里面的implements的用法哦~加油,那样你就知道为什么这样写了哦
2015-12-17 回复 有任何疑惑可以回复我~
#2

baobao9888 提问者 回复 lynhao

呵呵,说出来让看到的人笑掉大牙啊。我10年前大学3年学的就是JAVA,学了整整3年,后来就就这饭给吃光了,呵呵。这回为了学习这个andriod我也重新温习的java,很多都是一边学一边检呢,呵呵。感谢您的耐心指导。
2015-12-17 回复 有任何疑惑可以回复我~
#3

lynhao 回复 baobao9888 提问者

555555你没帮我采纳我好桑心呐,话说10年前呐,我今年才大二~抱拳!
2015-12-17 回复 有任何疑惑可以回复我~

因为这个this就是指你实现的OnClickListener这个类,你也可以用匿名类直接在

loginButton.setOnClickListener( new OnClickListener(){  .........})


0 回复 有任何疑惑可以回复我~

package com.example.firstandroidapp;



import android.app.Activity;

import android.net.sip.SipAudioCall.Listener;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;


public class MainActivity extends Activity implements OnClickListener{


    private Button loginButton;

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        

        loginButton = (Button) findViewById(R.id.button1);

        loginButton.setOnClickListener(this);

    }


public void onClick(View arg0) {

Toast.makeText(MainActivity.this, "interface does excute", 3).show();

}


}


0 回复 有任何疑惑可以回复我~

如果不用this还有别的写法吗?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第一门课(入门篇)
  • 参与学习       312477    人
  • 解答问题       4931    个

想快速掌握Android应用开发基础,选择学习这门课程就对了。

进入课程

loginButton.setOnClickListener(this);这里为什么要用this呢?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号