【问题标题】:Get current onClickListener of an Android View object获取 Android View 对象的当前 onClickListener
【发布时间】:2011-07-07 11:52:07
【问题描述】:

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

非常感谢!!!

【问题讨论】:

标签: java android android-widget


【解决方案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..

    }
});

确保有一个类似于 YourView 的子类视图,它覆盖 setOnClickListener 并保留对侦听器的引用以使用 getOnClickListner 访问。

我没有以任何方式测试过这段代码,把它当作你需要做的伪代码。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2011-01-06
    • 2017-02-12
    相关资源
    最近更新 更多