在安卓中,是否可以给多个按钮附加 onClick 监听器? 例如:
btn1.setOnClickListener(listener1);
btn1.setOnCliclListener(listener2);
当按钮被点击时,listener1
和listener2
的onClick事件都会被触发吗?
在普通的GUI应用程序中,我知道我们可以为一个事件附加多个事件处理程序。在Android中是否也可以这样做或者存在任何限制?
敬礼, Lalith
在安卓中,是否可以给多个按钮附加 onClick 监听器? 例如:
btn1.setOnClickListener(listener1);
btn1.setOnCliclListener(listener2);
当按钮被点击时,listener1
和listener2
的onClick事件都会被触发吗?
在普通的GUI应用程序中,我知道我们可以为一个事件附加多个事件处理程序。在Android中是否也可以这样做或者存在任何限制?
敬礼, Lalith
通常情况下,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);
}})
这是我将在 Kotlin 中做的事情:
arrayListOf(
view1,
view2,
view3
).forEach { it.setOnClickListener { /*do stuff here*/ } }
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
}