当有多个click事件时的简易做法

让类实现接口OnClickListener

然后button.setOnClickListener(this);

之后重写onClick(View v)函数。

通过v.getId()得到是哪个view触发了click事件。然后分情况处理。如

 1 package com.example.linearlayout;
 2
 3 import android.os.Bundle;
 4 import android.app.Activity;
 5 import android.view.Menu;
 6 import android.view.View;
 7 import android.view.View.OnClickListener;
 8 import android.widget.Button;
 9
10 public class MainActivity extends Activity implements OnClickListener {
11     Button tl;
12     Button rl;
13     Button fl;
14     Button al;
15
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.activity_main);
20         tl=(Button)findViewById(R.id.button1);
21         tl.setOnClickListener(this);
22         rl=(Button)findViewById(R.id.button2);
23         rl.setOnClickListener(this);
24         fl=(Button)findViewById(R.id.button3);
25         fl.setOnClickListener(this);
26         al=(Button)findViewById(R.id.button4);
27         al.setOnClickListener(this);
28     }
29
30     @Override
31     public boolean onCreateOptionsMenu(Menu menu) {
32         // Inflate the menu; this adds items to the action bar if it is present.
33         getMenuInflater().inflate(R.menu.main, menu);
34         return true;
35     }
36
37     @Override
38     public void onClick(View v) {
39         // TODO Auto-generated method stub
40         if(v.getId()==R.id.button1)
41         {
42             setContentView(R.layout.tablelayout);
43         }
44         if(v.getId()==R.id.button2)
45         {
46             setContentView(R.layout.relativelayout);
47         }
48         if(v.getId()==R.id.button3)
49         {
50             setContentView(R.layout.framelayout);
51         }
52         if(v.getId()==R.id.button4)
53         {
54             setContentView(R.layout.absolutelayout);
55         }
56     }
57
58 }

上面40到50行中,有4个if语句,用来判断v是哪一个view。

其实可以通过switch(v.getId())来替换

当有多个click事件时的简易做法

时间: 2024-11-17 10:03:29

当有多个click事件时的简易做法的相关文章

js动态绑定click事件时function传参问题

今天碰到了这样一个问题,我在javascript中动态创建了一个button, 然后我想给改button添加click事件,绑定的function想要传入一个变量参数, 一开始我想直接通过函数传参传进来,然而不知道为什么,click事件无法正常响应, 最后发现可以这么做,将需要传入的参数加入button的属性中,然后通过getAttribute()获得: 1 function add_book_panel(infor){ 2 //在这个函数中进行DOM元素操作,需要传入参数infor 3 - 4

动态添加DOM时,绑定的click事件会重复执行

最近因为业务需求,需要重写window的alert和confirm弹窗,但是每次显示的提示按钮不相同,所有每次打开的弹窗都需要重写生成,但是对于相同的按钮会保留上次创建时的click事件,所以当你创建了多少次弹窗,你下次单击该按钮就会执行多少次,面对这个问题有两个解决方法: 1,每次关闭弹窗时都将其销毁,destory() 方法,将创建的dom从document中remove()掉: 2,将一些公共的btn设置为公用的dom,不需要每次都进行创建,这样在下一次为其btn绑定click事件时,un

在微信公众号开发(微站)过程中用Zepto/jquery的on/live绑定的click事件点击无效(不能执行)

问题描述 当使用委托给一个非button.a标签元素添加click事件时,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 div, span 等),此时 click 事件会失效. 解决办法 解决办法有 4 种可供选择: ?将 click 事件直接绑定到目标?元素(??即 .target)上 将目标?元素换成 <a> 或者 button 等可点击的?元素 ?将 click 事件委托到?????非 document 或 body 的??父级元素上 ?给?目

通过js添加的DOM节点的click事件绑定不上的解决方案以及IOS下click事件委派失效的解决方案

问题描述: 如以下代码所示,通过js添加的Dom节点,在其上绑定点击事件,有的时候会出现点击事件不响应的情况,按照正常的理解,js代码具有阻塞性,Dom节点添加成功之后,就可以找到该节点并绑定事件,没有道理会出现事件绑定不上的问题,但是这种情况的确是遇到了多次,问题原因有待日后深入理解,下面记载一下问题的解决方案. 解决方案: 方案一:将事件绑定直接写在行内标签上"<thead onclick='myFunction(this)' >",其中,this代表的是当前元素,是一

如何解决 touchstart 事件与 click 事件的冲突

一 · 业务场景的描述 在对已完成的PC站点进行移动端适配时,我们想要站点在移动设备上有更快的响应速度,以带给用户更好的体验,此时,我们应该使用移动设备专用的事件系统,例如,使用 touchstart 事件代替 click 事件. 为什么这样效果会更好呢?根据Google开发者文档中的描述: mobile browsers will wait approximately 300ms from the time that you tap the button to fire the click e

vue中,svg图标添加click事件,部分浏览器不生效

vue项目中,使用svg图标,但是发现,为svg图标绑定click事件时,部分浏览器会出现,点击没有反应的情况,代码如下: <icon name="icon_add" @click="addSubject(scope.$index)"> </icon> 后来发现,在edge内核中只有点击svg边缘部分才会触发click事件 所以解决办法如下:为svg图标外面包裹一层元素,click事件绑定在外侧元素上 <a href='javascri

以input=file方式,获取文件时,在IE下8无法通过某个按钮click事件间接触发input=file的change事件

最近在项目中遇到了许多上传问题,公司内部的组件,通过form上传,需要使用input=file触发选择文件, 因为input=file在各个浏览器中显示的样式是不同的,谷歌,火狐,IE都有所不同,而且不太美观,所以为了解决 这一个问题,一开始采用了隐藏input=file 然后通过一个显示的button间接触发input=file的click事件如下 <input type="file" id="upload" style="display:none

点击label时click事件被触发两次的坑

原文:点击label时click事件被触发两次的坑 今天帮群里的朋友看一段代码的时候偶然间遇到一个label的坑,点击label的时候,监听的click事件被执行两次: 具体代码如下: 1 <div id="test"> 2 <input type="checkbox" name="abc" id="abc"/> 3 <label for="abc">3423432432

移动端click事件延时

在移动端使用click事件会产生300ms的延迟 问题的产生: 移动端存在双击放大的问题,所以在移动端点击事件发生时,为了判断用户的行为(到底是要双击还是要点击),浏览器通常会等待300ms,如果300ms之内,用户没有再次点击,则判定为点击事件,否则判定为双击缩放. 为什么要解决: 线代web对性能的极致追求,对用户体验的高标准,让着300ms的卡顿变得难以接受 如何解决: 1.user-scalable:no  禁止缩放——没有缩放就不存在双击,也就没有点击延迟 2.指针事件:CSS:-ms