Plantago
Plantago
2016-01-27 01:17
采纳率: 52.9%
浏览 4.8k

有多个button 如何监听

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • leilba
    林深 2016-01-27 01:36
    已采纳

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

     //你的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;
                    }
    }
    
    
    点赞 评论
  • 91program
    91program 2016-01-27 01:22

    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;  
                }     
            }  
        };  
    
    点赞 评论
  • xuzixiansheng
    大旭子 2016-01-27 01:23

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

    点赞 评论
  • xuzixiansheng
    大旭子 2016-01-27 01:27

    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循环简化下代码;

    点赞 评论
  • leilba
    林深 2016-01-27 01:32

    给你个我觉得挺简洁的方法,不需要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接口,不然会报错的。

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

    点赞 评论
  • linxiaobo110
    linxiaobo110 2016-01-27 03:09

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

    点赞 评论
  • Crazy_zihao
    紫豪 2016-01-27 03:23

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

    点赞 评论

相关推荐