2011-07-07 27 views
6

我需要獲取View對象的當前onClickListener - 和其他類型的偵聽器 - 以便安裝一個新的代理 - onClickListener,它將完成一些工作,然後轉發呼叫給原來的聽衆。獲取Android視圖對象的當前onClickListener

非常感謝!

+1

在這一點上,爲什麼不乾脆讓你的代理onClickListener你onClickListener? – Otra

+0

在Android視圖中[getOnClickListener()可能的重複](http://stackoverflow.com/questions/11186960/getonclicklistener-in-android-views) –

回答

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訪問..

我還沒有以任何方式測試這個代碼,把它當作你需要做的僞代碼。

我希望這會了解你的幾件事情:)