2013-05-12 60 views
0

我跟着this tutorial,它的工作很棒。在我的片段看來,有一些按鈕,我有一些onClick分配給。例如,我有這樣一個按鈕:如何在使用片段時附加到parentView?

<ImageButton 
android:onClick="doSomething"> 
</ImageButton> 

在創建我用下面的代碼rootView:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    ViewGroup rootView = (ViewGroup) inflater.inflate(
      R.layout.fragment_screen_slide_page, container, false); 

    return rootView; 
} 

我做了一些谷歌搜索,發現最後一個參數是重視parentView和我有將其設置爲true。但父視圖是容器。這個容器指向哪裏? 我應該在哪裏編寫函數'doSomething'?

+0

爲什麼不從ImageButton中引用對象,並通過從rootView對象指向onCreateView()內添加點擊監聽器 – Noundla 2013-05-12 18:34:55

+0

@noundla是的,這是可能的。但我只是在學習這個概念。這很容易,而且結構正確嗎?必須有一些方法來綁定viewGroup和FragmentActivity。 – 2013-05-12 18:36:31

+1

我認爲這在使用碎片時會很困難。因爲在某個特定時間,我們可能需要刪除並添加碎片。此外,該方法將與該活動一起使用。所以最好繼續使用監聽器。 – Noundla 2013-05-12 18:41:42

回答

1

我做了一些Google搜索,發現最後一個參數是附加到 父視圖,我已將它設置爲true。

不要將其設置爲true。在onCreateView()中,您將創建片段的視圖並將其返回,並且Android將自己將該視圖附加到佈局(文檔所述)。

這個容器指向哪裏?

如果不爲空,它將是片段視圖將被添加的佈局,通常用於爲新近膨脹的視圖生成適當的LayoutParams

我應該在哪裏寫'doSomething'函數?

作爲使用onClick屬性將是片段佈局應刪除從佈局中onClick屬性,並設置在OnClickListener代碼上的按鈕的一部分的按鈕。 Android將在Activity級別搜索doSomething()方法,因此無法直接在片段中接收點擊事件。

+0

我知道它無法直接在片段中接收onClick事件。但是有一個FragmentActivity正在創建這個片段。有什麼辦法將事件發送到該活動? – 2013-05-12 18:41:11

+1

@GeoPaul「活動」可以將事件發送到片段,如果這是你想要的。你需要在'Activity'和'doSomething()'方法中實現'doSomething()'方法,以尋找目標片段並調用該片段的方法,讓它知道發生了什麼。但是這會讓事情變得更加複雜,片段中的聽衆是更好的主意。 – Luksprog 2013-05-12 18:44:34

+0

好的,我會使用OnClickListeners。但如果有更好的辦法,讓我知道 – 2013-05-12 18:47:19

相關問題