是否可以将多个 onClick 侦听器附加到 android 中的按钮?例子:
btn1.setOnClickListener(listener1);
btn1.setOnCliclListener(listener2);
而当按钮被点击时两者的onClick事件listener1
又listener2
被触发呢?
在普通的 GUI 应用程序中,我知道我们可以为一个事件附加多个事件处理程序。android也可以吗?或者有任何限制吗?
问候, 拉利斯
是否可以将多个 onClick 侦听器附加到 android 中的按钮?例子:
btn1.setOnClickListener(listener1);
btn1.setOnCliclListener(listener2);
而当按钮被点击时两者的onClick事件listener1
又listener2
被触发呢?
在普通的 GUI 应用程序中,我知道我们可以为一个事件附加多个事件处理程序。android也可以吗?或者有任何限制吗?
问候, 拉利斯
Android 一般只支持一个注册的监听器。但是,您可以轻松地创建一个侦听器,该侦听器只需使用复合模式将事件转发给其他侦听器。
如果有人遇到类似的问题,试试这个:
private void setClickListeners(View view, List<View.OnClickListener> clickListeners){
view.setOnClickListener(v -> {
for(View.OnClickListener listener: clickListeners){
listener.onClick(v);
}
});
}
实现这一目标的简单方法是:
btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
listener1.onClick(v);
listener2.onClick(v);
}})
或者在 listener1 的定义中调用 listener2.onClick(v)
public void onClick(View v) {
if(v.getId() == R.id.button1) {
// do this
}else if(v.getId() == R.id.button2) {
// do that
}
}
不,例如,只需这样做:
设置监听器:
btn.setOnClickListener(this);
实施方法:
public void Onclick(View arg0){
// check your id and do what you want
}