对于多个button要在同一个监听器中实现自己的单击事件的方法小诀窍。
在网上的一些教程中往往是把一个button加入多个监听器,却非常少有人会把多个button在同一个监听器中去实现他们的单击事件,并且这杨的事实上是非常有用的,比方说在制作一个简单的计算器是就须要0-9。这十个数字button假设要单独的去写这十个button的单击事件,那能够想象这样写出来的代码绝对是不够健壮的,这种程序也是会影响其执行速度的。这种程序假设是在java中是非常easy实现的,可是在android中要涉及的知识还是非常多的,接下来先看看基本的代码:
//////////////使用窗体作为监听器。
public class index extends Activity implements OnClickListener{
Button bs0,bs1,bs2,bs3,bs4,bs5,bs6,bs7,bs8,bs9,call,c;
EditText edit;
Button del;
private static final int COUNT=0;
public int bi[]={R.id.i0,R.id.i1,R.id.i2,R.id.i3,R.id.i4,R.id.i5,R.id.i6,R.id.i7,R.id.i8,R.id.i9};
bs0=(Button) findViewById(bi[0]);
bs1=(Button) findViewById(bi[1]);
bs2=(Button) findViewById(bi[2]);
bs3=(Button) findViewById(bi[3]);
bs4=(Button) findViewById(bi[4]);
bs5=(Button) findViewById(bi[5]);
bs6=(Button) findViewById(bi[6]);
bs7=(Button) findViewById(bi[7]);
bs8=(Button) findViewById(bi[8]);
bs9=(Button) findViewById(bi[9]);
edit=(EditText) findViewById(R.id.edit);
call=(Button) findViewById(R.id.call);
c=(Button) findViewById(R.id.c);
del=(Button) findViewById(R.id.del);
bs0.setOnClickListener(this);
bs1.setOnClickListener(this);
bs2.setOnClickListener(this);
bs3.setOnClickListener(this);
bs4.setOnClickListener(this);
bs5.setOnClickListener(this);
bs6.setOnClickListener(this);
bs7.setOnClickListener(this);
bs8.setOnClickListener(this);
bs9.setOnClickListener(this);
call.setOnClickListener(this);
c.setOnClickListener(this);
del.setOnClickListener(this);
}
///////////////重写onClick()方法
public void onClick(View v) {
//////////////使用HashMap把button当成键把数字当成值
Integer i0=0,i1=1,i2=2,i3=3,i4=4,i5=5,i6=6,i7=7,i8=8,i9=9,d=10,ca=11,c1=12;
HashMapbf=new HashMap();
bf.put(bs0, i0);bf.put(bs1, i1);bf.put(bs2, i2);bf.put(bs3, i3);bf.put(bs4, i4);bf.put(bs5, i5);bf.put(bs6, i6);
bf.put(bs7, i7);bf.put(bs8, i8);bf.put(bs9, i9);bf.put(del, d);bf.put(call, ca);bf.put(c, c1);
Button bbs=(Button)v;
int ii=bf.get(v);
if (ii<10){
String s1=String.valueOf(ii);
edit.append(s1);
}
//////////////////在依据获取的数字的值不同来为不同的button或其它的控件来加入它们的单击事件。
else if(ii==10){
String s3=edit.getText().toString();
System.out.print(s3);
s3=(s3.length()>1)?
s3.substring(0,s3.length()-1):"";
edit.setText(s3);
}
else if (ii==11){
}
else if(ii==12){
index.this.finish();
}
}
对于多个button要在同一个监听器中实现自己的单击事件的方法小诀窍。的更多相关文章
- Extjs中给同一个GridPanel中的事件添加参数的方法
Extjs中给同一个GridPanel中的事件添加参数的方法: this.isUse = new Ext.Action({ text:'启用', scope ...
- [原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Android的按钮单击事件及监听器四种常见的实现方式
第一种:匿名内部类作为事件监听器类<ignore_js_op>大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以 ...
- 完美实现在同一个页面中使用不同样式的artDialog样式
偶然发现artDialog.js这个插件,就被其优雅的设计及漂亮的效果深深吸引,在做例子时碰到了一些想当然它应该提供但却没有提供的功能,不过这都不影响我对它的喜爱,下面说一下遇到的问题吧! artDi ...
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
博客地址 : http://blog.csdn.net/shulianghan/article/details/41520569 代码下载 : -- GitHub : https://github.c ...
- 如何将同一个APP中的不同activity在Recent(最近任务)中显示?
需求描述 在应用Application1中存在A.B两个activity,当在应用启动了A.B activity,点击Recent键,如何让A.B两个activity都显示在Recent界面(最近任务 ...
- Android的按钮单击事件及监听器的实现方式
第一种:匿名内部类作为事件监听器类 大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式 的事件监听器更合适 ...
- 因为此控件已在 web.config 中注册并且与该页位于同一个目录中
在web.config文件配置了用户控件 <pages> <controls> <add tagPrefix="my" tagName="l ...
- MVC中使用内建的HTML辅助方法产生表单元素提交表单与button按钮事件的陷阱
网站模板页有个登陆的退出按钮,当点击时跳转到登陆页面. <button onclick="logout()" >退出</button> $("#l ...
随机推荐
- .NetCore下 Exceptionless 分布式日志的个性化处理
Event Type 在Exceptionless中有 Exception .LogMessage.Broken Links .Feature Usages 接下来就这几种类型分别添加日志记录 Exc ...
- [转] map/reduce
如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念. ...
- vmware工具克隆linux系统步骤及配置
我们在学习的时候使用vmware创建自己的虚拟机,但是我们有时学习环境需要多台计算机进行操作演示,如果安装创建虚拟机.再在虚拟机上安装操作系统.这样很花费我们的时间,而且还步能保证服务的一直性,这就用 ...
- Angular快速学习笔记(4) -- Observable与RxJS
介绍RxJS前,先介绍Observable 可观察对象(Observable) 可观察对象支持在应用中的发布者和订阅者之间传递消息. 可观察对象可以发送多个任意类型的值 -- 字面量.消息.事件. 基 ...
- java 反射获取类的静态属性值
public class AppTest { private NodeClass nodeClass; public static String hehe = "hehe"; pu ...
- python异常装饰器--比较全的版本了
# 异常捕获装饰器(亦可用于类方法) def try_except_log(f=None, max_retries: int = 5, delay: (int, float) = 1, step: ( ...
- 关于输出螺旋矩阵的demo
输出类似 1 2 3 8 9 4 7 6 5 主要难点是如何找到表示的算法 我的理解是,先生成一个n*n的矩阵,然后再往里面塞数字,而塞的方法分别有四种:由左往右,由上往下,由右往左,由下往上,没塞完 ...
- 喵哈哈村的魔法考试 Round #5 (Div.2) 题解
老规矩 有问题直接联系我:475517977@qq.com A 直接暴力的for一遍,统计连续的有多少个就好了.模拟题. #include<bits/stdc++.h> using nam ...
- ROS知识(20)----SLAM资源集合
1.各种最新开源的SLAM a.OpenSLAM.这里收集了各种最新的开源SLAM资料,包含了比如: ORB_SLAM, ORB_SLAM2, hector_slam,ethzasl_ptam,g2o ...
- CentOS 7开机不执行/etc/rc.local的解决方法
该死的CentOS 7居然开机不执行/etc/rc.local!!!!! 解决: chmod +x /etc/rc.d/rc.local 问题分析: 其实在/etc/rc.lacal文件上已经说明了, ...