前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >onclicklistener到底怎么用?

onclicklistener到底怎么用?

作者头像
mukekeheart
发布2018-02-27 15:12:03
4K0
发布2018-02-27 15:12:03
举报
文章被收录于专栏:mukekeheart的iOS之旅

相信很多像我一样的新手学习Android开发会遇到这个问题,通过这几天的归类和总结,将我的理解写在下面,欢迎大家一起前来讨论:

以按钮BUTTON的监听事件为例,以下的监听实现都是等价的:

1.使用接口继承按钮监听方法

代码语言:javascript
复制
 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.view.View;
 4 import android.widget.Button;
 5 import android.widget.TextView;
 6 
 7 /* 这里接口继承的方法是隶属于按钮BUTTON的,因此前面导入的头文件只需有BUTTON即可 */
 8 public class Hello_to_worldActivity extends Activity implements Button.OnClickListener {
 9     /** Called when the activity is first created. */
10     private Button btn_say_hello;
11     private TextView hello_world;
12 
13     @Override
14     public void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.main);
17         btn_say_hello = (Button) findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
18         hello_world = (TextView) findViewById(R.id.textView1);
19         btn_say_hello.setOnClickListener(this);// 由于该类继承了BUTTON的监听,
20     } // 因此设置监听的参数只需传本类的对象即可
21 
22     public void onClick(View v) {
23         // TODO Auto-generated method stub
24         hello_world.setText("dickren123!");// 抽象接口的内部方法的实现
25     }
26 }

2.使用接口继承view类的监听方法

代码语言:javascript
复制
 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.view.View;
 4 import android.view.View.OnClickListener;/* 导入的头文件需要有view类监听 */
 5 import android.widget.Button;
 6 import android.widget.TextView;
 7 
 8 public class Hello_to_worldActivity extends Activity implements OnClickListener {
 9     /** Called when the activity is first created. */
10     private Button btn_say_hello;
11     private TextView hello_world;
12 
13     @Override
14     public void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.main);
17         btn_say_hello = (Button) findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
18         hello_world = (TextView) findViewById(R.id.textView1);
19         btn_say_hello.setOnClickListener(this);// 由于该类继承了view的监听,
20     } // 因此设置监听的参数只需传本类的对象即可
21 
22     public void onClick(View v) {
23         // TODO Auto-generated method stub
24         hello_world.setText("dickren123!");// 抽象接口的内部方法的实现
25     }
26 }  

3.不用接口,在类内部直接实现监听

代码语言:javascript
复制
 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.view.View;
 4 import android.widget.Button;
 5 import android.widget.TextView;
 6 
 7 public class Hello_to_worldActivity extends Activity {
 8     /** Called when the activity is first created. */
 9     private Button btn_say_hello;
10     private TextView hello_world;
11 
12     @Override
13     public void onCreate(Bundle savedInstanceState) {
14         super.onCreate(savedInstanceState);
15         setContentView(R.layout.main);
16         btn_say_hello = (Button) findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
17         hello_world = (TextView) findViewById(R.id.textView1);
18         btn_say_hello.setOnClickListener(new Button.OnClickListener() {
19             public void onClick(View v) { // 使用匿名的Button实例
20                 // TODO Auto-generated method stub
21                 hello_world.setText("dickren123!");// 抽象接口的内部方法的实现
22             }
23         });
24     }
25 }

4、如果不使用匿名实例,也可以定义一个具体的实例

代码语言:javascript
复制
 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.view.View;
 4 import android.widget.Button;
 5 
 6 public class Hello_to_worldActivity extends Activity {
 7     /** Called when the activity is first created. */
 8     private Button btn_say_hello;
 9 
10     @Override
11     public void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setContentView(R.layout.main);
14         btn_say_hello = (Button) findViewById(R.id.bnt_SAY_HELLO_TO_WORLD);
15         btn_listener bl = new btn_listener();
16         btn_say_hello.setOnClickListener(bl); // bl是类btn_listener的实例,而btn_listener为监听方法的接口
17     } // 因此设置监听的参数只需传本类的对象即可
18 }
19 
20 class btn_listener implements Button.OnClickListener {
21     public void onClick(View v) {
22         // TODO Auto-generated method stub
23 
24     }
25 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-07-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.使用接口继承按钮监听方法
  • 2.使用接口继承view类的监听方法
  • 3.不用接口,在类内部直接实现监听
  • 4、如果不使用匿名实例,也可以定义一个具体的实例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档