2012-12-14 140 views
1

我在我的應用中實現了片段。參考documentation, 我寫了我應該使用getActivity()來訪問活動方法,但也(在下一段)我應該在片段中聲明一個接口,並讓活動實現它。 現在,第二種方法是用於事件等回調方法,但我也可以使用getActivity().onSomeEventHappened(),不是嗎?片段和活動之間的通信

有人可以解釋我的區別?因爲我看不到他們之間的差異。

回答

2

如果您知道getActivity()將始終返回您期望的活動類型,則最終結果沒有區別。

但是使用接口是一個很好的做法,因爲它可以將您的碎片從特定的活動實現中分離出來。因此,如果您將來如果決定將片段用於不同的活動,您只需讓該活動實現您的片段接口即可提醒任何片段事件。

如果你想要一個容易擴展而沒有副作用的應用程序,你應該總是努力去分離組件。

+0

清除。謝謝。 –

1

你不能總是簡單地打電話給getActivity().onSomeEventHappened()。試想一下這種情況:你有兩個片段,一個是ListView,另一個是基於listItem選擇的圖片。在第二個片段中,不能只調用getActivity().onListItemClicked(),因爲你的活動沒有這樣的方法,但是如果活動實現接口並從第一個片段捕獲這些事件,則可以將關於事件的信息傳遞給第二個片段以及正確的圖像。

+0

好的,但如果我知道'getActivity()'返回的活動是我聲明的活動,那麼我可以強制轉換返回的引用並使用我的活動的方法,對嗎?這樣,界面就沒用了嗎? –