将多个侦听器附加到android中的视图?

时间:2010-12-27 23:33:54

标签: android events onclicklistener

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

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

单击按钮时,触发了listener1listener2的事件?

在普通的GUI应用程序中,我知道我们可以为事件附加多个事件处理程序。是否有可能是Android或有任何限制?

此致 Lalith

5 个答案:

答案 0 :(得分:37)

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

答案 1 :(得分:1)

public void onClick(View v) {
    if(v.getId() == R.id.button1) {
        // do this
    }else if(v.getId() == R.id.button2) {
        // do that
    }
}

答案 2 :(得分:1)

如果有人遇到类似问题,请尝试以下方法:

private void setClickListeners(View view, List<View.OnClickListener> clickListeners){
    view.setOnClickListener(v -> {
        for(View.OnClickListener listener: clickListeners){
            listener.onClick(v);
        }
    });
}

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:-1)

不,例如,这样做:

设置监听器:

btn.setOnClickListener(this);

实施方法:

public void Onclick(View arg0){

   // check your id and do what you want
}