onclicklistener到底怎么用?
2016-07-15 19:59
567 查看
转载地址:http://blog.csdn.net/dickren123/article/details/7216975
相信很多像我一样的新手学习Android开发会遇到这个问题,通过这几天的归类和总结,将我的理解写在下面,欢迎大家一起前来讨论:
以按钮BUTTON的监听事件为例,以下的监听实现都是等价的:
相信很多像我一样的新手学习Android开发会遇到这个问题,通过这几天的归类和总结,将我的理解写在下面,欢迎大家一起前来讨论:
以按钮BUTTON的监听事件为例,以下的监听实现都是等价的:
1.使用接口继承按钮监听方法
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; /* 这里接口继承的方法是隶属于按钮BUTTON的,因此前面导入的头文件只需有BUTTON即可 */ public class Hello_to_worldActivity extends Activity implements Button.OnClickListener { /** Called when the activity is first created. */ private Button btn_say_hello; private TextView hello_world; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn_say_hello = (Button) findViewById(R.id.bnt_SAY_HELLO_TO_WORLD); hello_world = (TextView) findViewById(R.id.textView1); btn_say_hello.setOnClickListener(this);// 由于该类继承了BUTTON的监听, } // 因此设置监听的参数只需传本类的对象即可 public void onClick(View v) { // TODO Auto-generated method stub hello_world.setText("dickren123!");// 抽象接口的内部方法的实现 } }
2.使用接口继承view类的监听方法
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener;/* 导入的头文件需要有view类监听 */ import android.widget.Button; import android.widget.TextView; public class Hello_to_worldActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ private Button btn_say_hello; private TextView hello_world; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn_say_hello = (Button) findViewById(R.id.bnt_SAY_HELLO_TO_WORLD); hello_world = (TextView) findViewById(R.id.textView1); btn_say_hello.setOnClickListener(this);// 由于该类继承了view的监听, } // 因此设置监听的参数只需传本类的对象即可 public void onClick(View v) { // TODO Auto-generated method stub hello_world.setText("dickren123!");// 抽象接口的内部方法的实现 } }
3.不用接口,在类内部直接实现监听
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class Hello_to_worldActivity extends Activity { /** Called when the activity is first created. */ private Button btn_say_hello; private TextView hello_world; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn_say_hello = (Button) findViewById(R.id.bnt_SAY_HELLO_TO_WORLD); hello_world = (TextView) findViewById(R.id.textView1); btn_say_hello.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { // 使用匿名的Button实例 // TODO Auto-generated method stub hello_world.setText("dickren123!");// 抽象接口的内部方法的实现 } }); } }
4、如果不使用匿名实例,也可以定义一个具体的实例
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Hello_to_worldActivity extends Activity { /** Called when the activity is first created. */ private Button btn_say_hello; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn_say_hello = (Button) findViewById(R.id.bnt_SAY_HELLO_TO_WORLD); btn_listener bl = new btn_listener(); btn_say_hello.setOnClickListener(bl); // bl是类btn_listener的实例,而btn_listener为监听方法的接口 } // 因此设置监听的参数只需传本类的对象即可 } class btn_listener implements Button.OnClickListener { public void onClick(View v) { // TODO Auto-generated method stub } }
相关文章推荐
- 简易的C/S系统(实现两个数的和)
- c# 访问SQL Server 其他会话正在使用事务的上下文
- 2016长乐夏令营 Day6
- 自我介绍-决心书
- 开发安全的web应用程序
- Java集合小结
- 【BZOJ-1336&1337】Alie最小圆覆盖 最小圆覆盖(随机增量法)
- IOS中json字符串原生数据请求&IOS跨平台AES128字符串加解密&AFNetworking框架的简单封装使用
- 软件构架、架构和框架的区别
- linux shell 自动输入y/yes
- js改变style样式和css样式
- OpenCV read video
- HDU 1162 Eddy's picture
- spring MVC框架下前台往java后台传送json数据
- 聪明的质监员(codevs 1138)
- 通过 Docker 化一个博客网站来开启我们的 Docker 之旅
- 归并排序
- SQLite简单理解常用方法与相关类
- dll's .h to dll's .lib
- oracle数据库操作