【发布时间】:2011-01-06 19:28:18
【问题描述】:
我有一个可点击的自定义 TextView。它定义了自己的 onClick 处理程序,以便根据点击更改其外观。但是,如果我随后在我的活动中定义第二个 onClick 处理程序以便根据被单击的按钮执行某些操作,则只会调用其中一个 onClick 函数。 onClick 是一个无效函数 - 有什么办法可以说我没有处理此点击,请将其传递给其他 onClick 处理程序?
这里更清楚的是代码:
在我拥有的扩展 TextView 的 MyCheckButton 内部:
setOnClickListener( mClickListener );
private OnClickListener mClickListener = new OnClickListener() {
public void onClick(View v) {
toggle();
}
};
但是,我将 MyCheckButton 包含到我的 Activity 中,当然我需要在单击它时执行一些操作,因此我将另一个 OnClickListener 附加到它:
MyCheckButton button= (MyCheckButtonButton) findViewById(R.id.cb);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// do something in the app
}
});
通过调用 setOnClickListener 两次,看来我正在替换原始侦听器,因此永远不会调用更改外观的 toggle()。如果单击此按钮已在使用 onClick 处理程序更改其外观,我该如何在我的活动中执行某些操作?我以为我只会看到两个 OnClickListener 都被调用。
【问题讨论】:
-
是的,我认为你是对的,你也可以尝试在你的 xml 文件中给它一个 onClick 属性,看看它是否仍然会在设置 onClickListener 后调用你的方法。
-
我猜这不是事件冒泡问题,我的问题是你不能将两个 OnClickListeners 添加到同一个视图中???这是其他地方的标准做法,所以我很困惑。
-
如果我使用 xml onClick,setOnClickListener 会覆盖它。