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
上传中...
上传图片
插入图片