2 baby bonnie Baby_Bonnie 于 2012.11.02 11:53 提问

多个按钮和OnClickListeners监听事件处理

在我的 XML布局文件中有16个按钮(数字,加号,减号等)。
我想知道如何检查哪个按钮被按下?
我的想法是每个按钮都使用onClick()方法。但是这个方法有点不切实际,因为有16个按钮呢。我在网上搜索说可以在布局xml中使用android:onClick="function" 的参数。我不会在程序中运用,请问大家谁知道怎么处理多个按钮和OnClickListeners监听事件呢?

4个回答

zhangjie201412
zhangjie201412   2012.11.02 15:50
已采纳

声明:

private Button startButton = null;
private Button endButton = null;

初始化:

startButton = (Button)findViewById(R.id.start);
endButton = (Button)findViewById(R.id.end);
startButton.setOnClickListener(new MyListener());
endButton.setOnClickListener(new MyListener());

实现:

public class MyListener implements OnClickListener {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(v.getId() == R.id.start) {
                。。。
            } else if(v.getId() == R.id.end) {
                。。。
            }
        }
    }

你很多的话 你只要都在MyListener中添加就行了

Baby_Bonnie
Baby_Bonnie 非常感谢你的答案,简洁明了!
5 年多之前 回复
hcg_21
hcg_21   2012.11.05 10:29

你可以在一个类中处理它们,然后实现OnClickListener事件。或在该Activity中添加:

import android.view.View.OnClickListener;

   public class MyActivity extends Activity implements OnClickListener {

      @Override public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         Button buttonA = (Button) findViewById(R.id.buttonA);    
         buttonA.setOnClickListener(this);
         Button buttonB = (Button) findViewById(R.id.buttonB); 
         buttonB.setOnClickListener(this);
      }

   //......

   public void onClick(View v) {

      switch (v.getId()) {
         case R.id.buttonA: 
          //......
          break;
         case R.id.buttonB:
          // ......
          break;
      }
   }

}
nana4ever
nana4ever   2012.11.05 09:37
import android.view.View.OnClickListener;

public class MyActivity extends Activity implements OnClickListener {

  @Override public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
     Button buttonA = (Button) findViewById(R.id.buttonA);    
     Button buttonB = (Button) findViewById(R.id.buttonB); 
     buttonA.setOnClickListener(this);
     buttonB.setOnClickListener(this);
  }

  public void onClick(View v) {
    if(v==buttonA)
    {
        do something...
    }
    if(v==buttonB)
    {
        do something...
    }
}
LiDaming_and
LiDaming_and   2012.11.06 17:23

您可以使用一个没有定义为匿名内部类的处理程序。但这个类得是一个单独的类。onClick()将会传递视图,你可以在onClick()中选择。

public class MyActivity implements OnClickListener {
    public void onClick(View v) {
       Button b = (Button)v;
       // do what you want 
    }

    ...
}

然后在你的layout.xml放入每个按钮

<Button android:id=".."
        android:onClick="onClick"
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android按钮的五种点击监听事件处理
1、匿名内部类作为监听器 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } }); 2、内部类作为监听器(可以使用) button.setOnClickListener(
Andorid事件处理 基于监听的事件处理
Andorid事件处理在Andorid中已经很完善的包装了关于事件处理的方式,主要有两套机制: 基于监听的事件处理 基于回调的事件处理 对于Android基于回调的时间处理来说: 主要做法重写Andorid组件特定的回调方法。Android中已经为大部分界面控件提供了回调方法,调用就好。对于Android监听的事件处理而言,就是我们经常遇到的组件绑定的事件监听器。 这篇文章主要写关于监听的
多个按钮监听
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class sceneload : MonoBehaviour { private Text text
Android 多个include标签的监听事件处理
include标签的作用是为了xml文件代码的模块化,详细不再多提。主要是说说include标签的监听。   网上也有很多例子,不过大多是只写了一个include标签的监听,如果需要实现多个include标签的监听怎么做呢?我至少是没在百度搜出来,经过不断的尝试,修改,终于找到了方法,现在分享给大家,希望对大家有帮助。   先介绍一点,就是include标签本身是不能设置监听的,不论是
Android中的事件处理总结-基于监听的事件处理
Android中的事件处理总结-基于监听的事件处理。1、事件对象:Event Source(事件源)+ Event(事件)+ Event Listener(事件监听器)。2、事件处理方法: 方法1).通过UI布局文件,设定UI的android:onClick的属性; 方法2).通过 匿名类 响应事件; 方法3).通过 内部类 响应事件; 方法4).通过 外部类 响应事件;方法5).通过 自身类 响应事件
Android多个按钮下本Activity按钮事件处理
当界面上有 两个Button按钮 假设他们的id 分别为btn1 , btn2 先让 Activity 实现接口  implements   OnClickListener    声明 两个 Button b1,  Button b2   在onCreate方法里 对应找到这两个 Button findviewbyid......不再赘述 b1.setOnClickListener(
【Android】基于监听的事件处理和基于回调的事件处理
凡是涉及到UI编程,就必然需要进行Android
【android】:android实现监听多个按钮事件
直接撸代码: 我有四个按钮,下面的代码演示了如何将多个按钮用一个事件监听在onCreate函数里面 Button button1 = (Button)findViewById(R.id.btn1); Button button2 = (Button)findViewById(R.id.btn2); Button button3 = (Button)fi
监听多个edittext内容 改变按钮颜色
效果如下图:当两个edittext都输入了内容才改变  &quot;确定&quot;  的颜色实现:其实就是在用到的时候 调用下面工具类的addAlledittext( )方法 把要监听的edittext都传进来    然后下面的工具类对传进来的edittext数组遍历设置一个监听器TextWatcher     在监听器的onTextChanged()方法中调用checkAllEdit()方法进行判断是否所有edi...
找茬游戏 多个按钮的按键监听
找茬游戏 多个按钮的按键监听,最简单的RelativeLayout布局