获取Android View对象的当前onClickListener

时间:2011-07-07 11:52:07

标签: java android android-widget

我需要获取View对象的当前onClickListener和其他类型的侦听器,以便安装新的proxy-onClickListener,它将执行一些工作,然后将调用转发给原始侦听器。

非常感谢!!!

1 个答案:

答案 0 :(得分:1)

你只需要有点创意!

做这样的事情:

对View.OnClickListener

进行子类化
abstract class ProxyAbleClickListener implements OnClickListener {

    Runnable ProxyAction;

    @Override
    public void onClick(View arg0) {
        if (ProxyAction != null) {
            ProxyAction.run();
        }
    }

    public void setProxyAction(Runnable proxyAction) {
        ProxyAction = proxyAction;
    }
}

/* Somwhere in your code ! */

YourView view = new Button(context);

view.setOnClickListener(new ProxyAbleClickListener() {
    public void onClick(View arg0) {
        // Insert onClick Code here

        super.onClick(arg0);
    }

});

ProxyAbleClickListener listener = (ProxyAbleClickListener) view.getOnClickListener();
listener.setProxyAction(new Runnable() {

    @Override
    public void run() {
        // Insert your proxy code here..

    }
});

确保有一个子类视图Like YourView,它会覆盖setOnClickListener并保持对使用getOnClickListner访问的侦听器的引用..

我没有以任何方式测试此代码,将其视为您需要执行的伪代码。

我希望这会让你学到一些东西:)