是否可以将多个onClick侦听器附加到android中的按钮? 例如:
btn1.setOnClickListener(listener1);
btn1.setOnCliclListener(listener2);
单击按钮时,触发了listener1
和listener2
的事件?
在普通的GUI应用程序中,我知道我们可以为事件附加多个事件处理程序。是否有可能是Android或有任何限制?
此致 Lalith
答案 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
}