Android中一个class可以有几个Listener?

时间:2021-08-21 00:05:05
我的一个class中有好几个Button对象,每个要完成不同的事情,书上的方法是new一个OnClickListener并重写onClick方法。
在onClick方法中先判断不同按钮的键值,再分别处理。最后将每个Button对象都注册这个OnClickListener

可我觉得这种做法不好,想为每个Button对象单独设置一个OnClickListener,不过Eclipse提示出错:buttonListener2 cannot be resolved.

是不是每个class只可以有一个同类型的Listener?

如果是的,那怎么办?

8 个解决方案

#1


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

#2


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

什么是匿名实现接口?

#3


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

#4


Android中一个class可以有几个Listener?奶茶MM Android中一个class可以有几个Listener?

#5


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

#6


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

#7


button1.setOnClickListener(new View.onClickListener(){
  ...
});

button2.setOnClickListener(new View.onClickListener(){
  ....
});

明白了吧 你自己的那个主类不要实现 onClickListener 这个接口

#8


 
  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

}
});

#1


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

#2


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

什么是匿名实现接口?

#3


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

#4


Android中一个class可以有几个Listener?奶茶MM Android中一个class可以有几个Listener?

#5


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

#6


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

#7


button1.setOnClickListener(new View.onClickListener(){
  ...
});

button2.setOnClickListener(new View.onClickListener(){
  ....
});

明白了吧 你自己的那个主类不要实现 onClickListener 这个接口

#8


 
  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

}
});