有多个button 如何监听

如题,我用表格布局做了很多个button,我想要的结果是:随便点击一个button,返回button上的文本。但是如果我每个button都有id、都要find、都要监听,岂不是很麻烦?求大神给个更简洁的方案,谢谢。

如果所有按钮操作都一样的话,那也简单

 //你的activity
public class MainActivity extends Activity implements View.OnClickListener {

@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_1: 
                        case R.id.btn_2: 
                        case R.id.btn_3: 
                        case R.id.btn_4: 
                        case R.id.btn_5: 
                        case R.id.btn_6: 
                        case R.id.btn_7: 
                        // 好了,全部获取到了
                        String text =( (Button)v).getText().toString();

                        break;
                }
}

Button 的监听实现,多个按键可以是一个监听函数,然后根据 按键ID 来实现是哪个按键。

 start = (Button) findViewById(R.id.button1);  
stop = (Button) findViewById(R.id.button2);  
start.setOnClickListener(mylistener );  
stop.setOnClickListener(mylistener );  
View.OnClickListener mylistener = new View.OnClickListener() {  

        @Override  
        public void onClick(View v) {  
            switch (v.getId()) {  
            case R.id.button1:  
                Log.d(TAG, "Start to recorder video\n");  
                start_recorde();  
                break;  
            case R.id.button2:  
                Log.d(TAG, "Stop to recorder video\n");  
                stop_recorde();  
                break;  
            default:  
                break;  
            }     
        }  
    };  

button的ID是都要设置的,但是你可以像做计算机一样利用数组,然后就可以一个声明一个数组button,里面包含多个id,等我去找找我曾经的源码给你看看啊。

private Button[] btn = new Button[10]; 这是0-9按键

btn[0] = (Button) findViewById(R.id.zero);
btn[1] = (Button) findViewById(R.id.one);
btn[2] = (Button) findViewById(R.id.two);
btn[3] = (Button) findViewById(R.id.three);
btn[4] = (Button) findViewById(R.id.four);
btn[5] = (Button) findViewById(R.id.five);
btn[6] = (Button) findViewById(R.id.six);
btn[7] = (Button) findViewById(R.id.seven);
btn[8] = (Button) findViewById(R.id.eight);
btn[9] = (Button) findViewById(R.id.nine);
-------------
获取按键再xml文件上的ID;
也可以写成for循环简化下代码;

给你个我觉得挺简洁的方法,不需要findviewbyId,不需要在activity里面保存按钮对象,十分好用(反正我一直在用)。
在layout的button里面添加一个onClick参数,在activity里面直接实现OnClickListener接口,比如说:

////layout

         <Button
            android:id="@+id/btn_test"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onClick"
            android:text="我是例子按钮"/>

////activity

//你的activity
public class MainActivity extends Activity implements View.OnClickListener {

@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_test: { //按钮的点击
                        //do Actions
                        //你需要返回文本是吧
                        String text =( (Button)v).getText().toString();
                        //get到文本了

                        break;
                        }
                }
}

屡试不爽,反正我觉得方便多了。。当然如果在layout里面加了onClick参数的话,那么activity里面必须要实现onClickListener接口,不然会报错的。

希望你会喜欢
如果有更好的方法,也求推荐,,(*^__^*)

每个BUTTON都有一个ID是必须的,但是多个按键可以用一个监听器。

你可以使用一个时间监听器,然后只要是按钮选中的就getText(),没ID你没法绑定监听啊。