onclicklistener到底怎么用?
转载地址:http://blog.csdn.net/dickren123/article/details/7216975
相信很多像我一样的新手学习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 }
}
onclicklistener到底怎么用?的更多相关文章
- 拨开迷雾,找回自我:DDD 应对具体业务场景,Domain Model 到底如何设计?
写在前面 除了博文内容之外,和 netfocus 兄的讨论,也可以让你学到很多(至少我是这样),不要错过哦. 阅读目录: 迷雾森林 找回自我 开源地址 后记 毫无疑问,领域驱动设计的核心是领域模型,领 ...
- Js new到底发生了什么
在Js中,我们使用了new关键字来进行实例化 那么在这个new的过程中到底发生了什么? 关于构造函数的return 正常来讲构造函数中是不用写return语句的,因为它会默认返回新创建的对象. 但是, ...
- 电信计费业务:预后融合OCS到底应该实扣还是虚扣?
引入OCS的初衷之一是为了让计费系统能够参与到用户的通讯控制中来,也就是所谓的实时信控.用户在没有余额时,通讯就会被停止,不会造成"天价欠费 ",一方面保障用户的利益,一方面也保障 ...
- 港真,到底应该选择OA还是BPM?
越来越多企业意识到流程管理的重要性,但是,选择OA还是BPM,却让他们产生了选择困难症. 一方面,企业皆注重流程的高效运转,最好内外部的业务都能用一个系统来解决.所有流程一天就能上线什么的,那就更好啦 ...
- 四、可空类型Nullable<T>到底是什么鬼
值类型为什么不可以为空 首先我们都知道引用类型默认值都是null,而值类型的默认值都有非null. 为什么引用类型可以为空?因为引用类型变量都是保存一个对象的地址引用(就像一个url对应一个页面),而 ...
- 在开发中到底要不要用var?
var是.net的一个语法糖,在Resharper中推荐都使用这个关键字,平常我也是经常用:但是在跟其他程序员推广使用时,他的一些考虑引发了我的深思,到底该不该使用这个关键字呢? 我使用的理由 我使用 ...
- 阿里的weex框架到底是什么
title: 阿里的weex框架到底是什么 date: 2016-09-27 10:22:34 tags: vue, weex category: 技术总结 --- weex 工作原理 首先看下官方的 ...
- 全局变量 HInstance 到底是在什么时候赋值的?
在学习 资源文件 和 钩子函数 时, 经常用到当前模块句柄(HInstance)这个全局变量. 今天特别想知道, 它到底是在什么时候给赋值的. 输入 HInstance; "Ctrl+鼠标& ...
- The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder is not applicable for the arguments
The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder i ...
随机推荐
- PLSQL_闪回操作3_Fashback Transaction Query
2014-12-09 Created By BaoXinjian
- DBA_Oracle DBA常用SQL汇总(概念)
2014-06-20 Created By BaoXinjian
- cocopods的安装和使用
- zabbix安装,关闭SELinux
一.缘由 在安装zabbix的时候,按照官网的Zabbix Manual一路跑下来,zabbix的dashboard提示:zabbix server is not running the inform ...
- 从千分位格式化谈JS性能优化
所谓的千分位形式,即从个位数起,每三位之间加一个逗号.例如“10,000”.针对这个需求,我起初写了这样一个函数: // 方法一function toThousands(num) {var resul ...
- 转载__直接拿来用!最火的Android开源项目(一)
http://www.csdn.net/article/2013-05-03/2815127-Android-open-source-projects 已分类汇总到 https://github.co ...
- windows下Gulp入门详细教程 &&gulp安装失败的原因(红色)
以下教程亲自实践可行: 另外添加一个Gulp自动编译.压缩.更新.测试的教程链接:https://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8 ...
- 那些不能错过的Xcode插件
来源:http://www.cocoachina.com/applenews/devnews/2013/0918/7022.html 古人云“工欲善其事必先利其器”,打造一个强大的开发环境,是立即 ...
- js实现加减乘除
/** ** 除法函数,用来得到精确的除法结果 ** 说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显.这个函数返回较为精确的除法结果. ** 调用:accDiv(arg ...
- 使用POI读取excel文件内容
1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...