2012-12-19 33 views
0

我讀"Communicating with Other Fragments"爲什麼Fragment不直接實現其關聯的活動的方法,而不是使用接口?

它寫道:

要允許片段最多傳達到它的活動,您可以定義 片段中的類的接口和 活動中實現它。該片段在其 onAttach()生命週期方法捕獲接口實現,然後可以調用接口 方法,以便與活動通信。

我的問題是:

爲什麼不片段直接執行其相關活動的方法,而不是使用的界面? 將界面用作片段及其關聯活動之間的媒體有什麼優勢?例如,另一種通信方式可以是:在Fragment類中,在onListItemClick()中,我可以直接使用activity.onArticleSelected(position),而不是mCallback.onArticleSelected(position);

+3

因爲Java不支持分部類,如C#一樣。 –

+0

謝謝。我很抱歉我不瞭解部分課程。在我的理解,通信的另一替代可以是:在片段類,在onListItemClick(),I可直接使用activity.onArticleSelected(位置),而不是mCallback.onArticleSelected(位置); – user1914692

+0

我也想知道這一點。我猜這是因爲Fragments被設計成模塊化的,可重用的組件。碎片與生命週期具有相似但不相同的生命週期。因爲它們可以被移除,該活動的生命週期過程中所取代,等在任何給定時間,它更有意義,然後再傳遞數據到活動與需要該數據的任何其它片段。不過希望我們可以對此有所瞭解。 –

回答

0

在某些情況下,該片段丟失協會與activity.I跨越特例來使用文件時choosers.In這種情況下,你無法找到根據fragment.So谷歌的任何活動可能要你做的正確的東西只在片段的onAttach()Taclifecycle中。

相關問題