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 ...
随机推荐
- POWERDESIGNER中显示样式设置
1.调整表.视图的显示样式. 右键选中的对象,选择format(或ctrl+t),在弹出窗口中选中content,可以设置只显示表名还是把所有列也显示出来. 2.如何显示表中字段的code. tool ...
- linux 屏幕亮度调节
Brightness sudo gedit /etc/default/grub find this line : GRUB_CMSLINE_LINUX_DEFAULT="quiet ...
- POJ题目分类
POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期: 一 ...
- 发布一个.net mvc站点遇到的问题及解决
1.先通过vs2012发布.net mvc项目,遇到问题是一路默认下来,提示发布已成功,但对应文件夹里没有任何文件 解决: 第一步,新建了一个文件夹 第二步,在[配置文件]步骤,新建配置文件 第三步, ...
- 黄聪:PHP 防护XSS,SQL,代码执行,文件包含等多种高危漏洞
版本:v1.1更新时间:2013-05-25更新内容:优化性能功能说明: 可以有效防护XSS,sql注射,代码执行,文件包含等多种高危漏洞. 使用方法: 将waf.php传到要包含的文件的目录 在页面 ...
- angular2 的依赖注入
angular2 的依赖注入包含了太多的内容,其中的一个重点就是注入器,而注入器又非常难理解,今天我们不深入介绍注入器的内容,可以参考官方文档,我们今天来说注入器的层级. 也就是组件获取服务的容器会选 ...
- Spark工程开发前台技术实现与后台函数调用
Spark是一个通用的大规模数据快速处理引擎.可以简单理解为Spark就是一个大数据分布式处理框架.基于内存计算的Spark的计算速度要比Hadoop的MapReduce快上50倍以上,基于磁盘的计算 ...
- Codeforces Round #358 (Div. 2)B. Alyona and Mex
B. Alyona and Mex time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- HTML番外整理
经过一周的个人项目与一周的团体项目,我学到了一些有用的内容,特分享如下: 一.视频 1.对在线视频的添加 在各大网站打开一个视频,在下方的分享找到HTML代码,然后复制HTML代码到自己的代码中. 2 ...
- CSS如何实现图片上下垂直居中
方法一: 使用margin方式,使图片在div中上下垂直居中.margin-top值的计算方式是:div的高度/2-图片高度/2. 代码实例如下: <!DOCTYPE html><h ...