获取Android View对象的当前onClickListener

ped*_*teo 6 java android android-widget

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

非常感谢!!!

小智 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..

    }
});
Run Code Online (Sandbox Code Playgroud)

确保有一个像 YourView 这样的子类视图,它覆盖 setOnClickListener 并保留对侦听器的引用以通过 getOnClickListner 进行访问。

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

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