我在我的應用中實現了片段。參考documentation, 我寫了我應該使用getActivity()
來訪問活動方法,但也(在下一段)我應該在片段中聲明一個接口,並讓活動實現它。 現在,第二種方法是用於事件等回調方法,但我也可以使用getActivity().onSomeEventHappened()
,不是嗎?片段和活動之間的通信
有人可以解釋我的區別?因爲我看不到他們之間的差異。
我在我的應用中實現了片段。參考documentation, 我寫了我應該使用getActivity()
來訪問活動方法,但也(在下一段)我應該在片段中聲明一個接口,並讓活動實現它。 現在,第二種方法是用於事件等回調方法,但我也可以使用getActivity().onSomeEventHappened()
,不是嗎?片段和活動之間的通信
有人可以解釋我的區別?因爲我看不到他們之間的差異。
如果您知道getActivity()將始終返回您期望的活動類型,則最終結果沒有區別。
但是使用接口是一個很好的做法,因爲它可以將您的碎片從特定的活動實現中分離出來。因此,如果您將來如果決定將片段用於不同的活動,您只需讓該活動實現您的片段接口即可提醒任何片段事件。
如果你想要一個容易擴展而沒有副作用的應用程序,你應該總是努力去分離組件。
你不能總是簡單地打電話給getActivity().onSomeEventHappened()
。試想一下這種情況:你有兩個片段,一個是ListView,另一個是基於listItem選擇的圖片。在第二個片段中,不能只調用getActivity().onListItemClicked()
,因爲你的活動沒有這樣的方法,但是如果活動實現接口並從第一個片段捕獲這些事件,則可以將關於事件的信息傳遞給第二個片段以及正確的圖像。
好的,但如果我知道'getActivity()'返回的活動是我聲明的活動,那麼我可以強制轉換返回的引用並使用我的活動的方法,對嗎?這樣,界面就沒用了嗎? –
清除。謝謝。 –