2011-03-15 104 views
11

我正在玩android的Fragments,我發現了一些對我沒有多大意義的東西。 因爲我沒有摩托羅拉xoom,我正在使用兼容性軟件包並在2.3.3版本上進行測試。碎片如何處理觸摸?

我的問題是: 當我用另一個替換fragment時,後面的一個繼續接收觸摸。

下面是重現的代碼。

我有一個項目列表,當你按下一行時,一個新的片段將被創建並顯示。 但是如果你觸摸綠色的片段,它將被ListFragment接收,增加後退按鈕的數量使我回到ListFragment

有人可以解釋爲什麼嗎?

編輯: 作爲CommonsWare的建議,我刪除,因爲我在Android問題跟蹤器打開此作爲issue粘貼在這裏的代碼,你可以從那裏download演示項目。

+0

您可能想要壓縮一個完整的項目來演示問題並將其從問題鏈接到它。 – CommonsWare 2011-03-15 23:16:13

+0

@CommonsWare:好的,我會這樣做。謝謝。 – Macarse 2011-03-16 01:18:49

回答

6

我有類似的問題。我在較大的片段頂部有一個較小的片段,您可以看到較小的片段從較小的片段中伸出。在某些情況下,當我按下頂部的片段時,它會觸發底部片段的onClick事件處理程序。

爲了防止發生這種情況,我將onClickListener設置爲較小片段的父佈局。通過這樣做,它可以防止將onClick事件傳遞給它後面的片段。

LinearLayout ll= (LinearLayout) mView.findViewById(R.id.topLayout); 
ll.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     //left empty on purpose to capture the onClick event. 
    } 
});