我的一个class中有好几个Button对象,每个要完成不同的事情,书上的方法是new一个OnClickListener并重写onClick方法。
在onClick方法中先判断不同按钮的键值,再分别处理。最后将每个Button对象都注册这个OnClickListener可我觉得这种做法不好,想为每个Button对象单独设置一个OnClickListener,不过Eclipse提示出错:buttonListener2 cannot be resolved.是不是每个class只可以有一个同类型的Listener?如果是的,那怎么办?

解决方案 »

  1.   

    你可以在这个Listener中通过View参数来判断是哪个button的事件,也可以分别给每个button匿名实现OnClickListener接口
      

  2.   

    好吧,楼主该好好学习了。。可以在OnClickListener方法里面判断是点击的哪个按钮,
      

  3.   

    继承OnClickListener接口,然后在该方法根据id判断你得点击的按钮,然后执行相关操作就可了!
      

  4.   

    楼主可以在初始化按钮(findviewbyid)下面紧接着写响应事件,每一个按钮都可以继承一个onclicklistener,直接把点击事件写在public void onclick(View view)这个函数里面即可;当然,你也可以写一个整合的listener函数,在里面判断当前按下的是哪一个button,在把点击事件写在相应的if里面,都是可以的。
      

  5.   

    button1.setOnClickListener(new View.onClickListener(){
      ...
    });button2.setOnClickListener(new View.onClickListener(){
      ....
    });明白了吧 你自己的那个主类不要实现 onClickListener 这个接口
      

  6.   

     
      btn1.setOnClickListener(btnListener);
      btn2.setOnClickListener(btnListener);
     }
     private OnClickListener btnListener = new OnClickListener()
     {
      @Override
      public void onClick(View myView)
      {
       Button btn = (Button) myView;
       switch (btn.getId())
       {
       case R.id.btn1:
        Toast.makeText(mainActivity.this, "点击了Button 1", Toast.LENGTH_LONG).show();
        break;
       case R.id.btn2:
        Toast.makeText(mainActivity.this, "点击了Button 2", Toast.LENGTH_LONG).show();
        break;
       }
      }
     };button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub

    }
    });

    button2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub

    }
    });