2013-02-14 79 views
0

是否有可能使onClickListener應用程序全局?使用全球onCLickListener

我基本上有幾個片段將使用相同的數字鍵盤輸入按鈕,而不是註冊和過濾每個片段中的每個按鈕的點擊事件,我想問是否可以在整個應用程序中共享一個onClickListener。

這是設置:

public class LoginFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle states) { 
    this.context = getActivity(); 

    // TODO: Register onClickListener...somehow 

    context.registerReceiver(receiver, filter); //For the intent listening 
    view = inflater.inflate(R.layout.layout_login_screen, container, false); 
    buildUI(null); 
    return view; 
    } 

(和兩個不同的片段simmilar這一個)

,然後當時的想法是:

public class NumPadListener implements OnClickListener { 

    @Override 
    public void onClick(View v) { 
    System.out.println("Yup...I'm listening?"); 

    // TODO: Do funny intent stuff here 
    } 

} 

這甚至可能嗎?如果是,如何? :)如果不是這樣,你有沒有建議如何以最好的方式實現這一點?謝謝

+0

button.setOnClickListener(new NumPadListener()); – dymmeh 2013-02-14 22:19:29

+0

啊......我現在感覺很遲鈍。我試圖設置onClickListener在獲取按鈕視圖的同一步驟,導致它告訴我void無法轉換爲Button(obv ...)謝謝^^ – AreusAstarte 2013-02-14 22:29:17

回答

0

是的,正如Dophh所示。但正確的方法可能是創建包含所有數字鍵盤按鈕的自己的視圖組件。您需要定義一個佈局文件,並創建一個擴展某種ViewGroup的類(請參見compound controls)。

這個自定義組件會照顧它內部按鈕的onClick事件。如果您需要它們針對更高級別的事件做出反應,那麼您可以公開某種接口(偵聽器)來查看要附加的活動和片段。

然後,您只需將自定義組件包含在您需要的任何佈局中,而不是複製一堆按鈕和onClick偵聽器附加代碼。