33

是否可以将多个 onClick 侦听器附加到 android 中的按钮?例子:

btn1.setOnClickListener(listener1);
btn1.setOnCliclListener(listener2);

而当按钮被点击时两者的onClick事件listener1listener2被触发呢?

在普通的 GUI 应用程序中,我知道我们可以为一个事件附加多个事件处理程序。android也可以吗?或者有任何限制吗?

问候, 拉利斯

4

5 回答 5

47

Android 一般只支持一个注册的监听器。但是,您可以轻松地创建一个侦听器,该侦听器只需使用复合模式将事件转发给其他侦听器。

于 2010-12-27T23:38:22.233 回答
3

如果有人遇到类似的问题,试试这个:

private void setClickListeners(View view, List<View.OnClickListener> clickListeners){
    view.setOnClickListener(v -> {
        for(View.OnClickListener listener: clickListeners){
            listener.onClick(v);
        }
    });
}
于 2020-10-22T12:18:55.600 回答
1

实现这一目标的简单方法是:

btn1.setOnClickListener(new View.OnClickListener(){
 @Override
 public void onClick(View v) {  
   listener1.onClick(v);
   listener2.onClick(v);
}})

或者在 listener1 的定义中调用 listener2.onClick(v)

于 2021-07-15T15:57:46.467 回答
-1
public void onClick(View v) {
    if(v.getId() == R.id.button1) {
        // do this
    }else if(v.getId() == R.id.button2) {
        // do that
    }
}
于 2012-01-11T18:13:06.827 回答
-5

不,例如,只需这样做:

设置监听器:

btn.setOnClickListener(this);

实施方法:

public void Onclick(View arg0){

   // check your id and do what you want
}
于 2010-12-27T23:44:07.700 回答