2013-05-15 29 views
2

我有許多按鈕在xml佈局文件中聲明,並使用此佈局的片段。如何捕捉片段中的onclick事件

 

button android:id="@+id/button1" android:onClick="onClickButton"/> 
button android:id="@+id/button2" android:onClick="onClickButton"/> 
.... 
button android:id="@+id/buttonN" android:onClick="onClickButton"/> 

這是失望的是,「onClickButton」事件在主機活動逮住,而不是在我的片段。當然,在我的片段,我可以手動解決這個問題如下:

 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.fragment_content, container, false); 

    Button button1 = (Button) view.findViewById(R.id.button1); 
    button1.setOnClickListener(...); 

    ... etc 

    Button buttonN = (Button) view.findViewById(R.id.buttonN); 
    buttonN.setOnClickListener(...); 

有處理onClickbutton片段中的任何事件明確的方式?

回答

1

不幸的是這樣做在代碼中是使用Android SDK的唯一方法。

你試過一些自定義的東西嗎? AndroidAnnotationsRoboGuice使其不那麼冗長。

+0

我寧願使用[數據存儲官方庫](https://developer.android.com/topic/libraries/data-binding/index.html) – venimania

+0

@venimania數據綁定庫在2013年不可用。ButterKnife也沒有。對於Android開發者來說,這些都是黑暗時刻; –

6

你所提到的方法是做它的非標準方式:

Button buttonN = (Button) view.findViewById(R.id.buttonN); 
buttonN.setOnClickListener(...); 

只要讓你的片段實現OnClickListener那麼你可以將其設置爲監聽所有按鈕

Button buttonN = (Button) view.findViewById(R.id.buttonN); 
buttonN.setOnClickListener(this);