2016-03-04 67 views
0

我想從活動中分離邏輯片段,但問題是我使用api調用並將數據保存在片段中。當用戶點擊片段中的項目時。我需要發送parcelable數據到其他片段來顯示有關項目的詳細信息。是否可以在碎片中打開新的碎片?

正在啓動android的片段反模式片段?

我想聽聽關於此事的一些意見。

+0

不知道爲什麼它會是反模式,如果有它的文檔... http://developer.android.com/training/basics/fragments/communicating.html –

+0

我認爲這是一種反模式。碎片意味着孤立的邏輯,不應該瞭解彼此的存在(並且要走得更遠,他們也不應該知道他們自己的活動)。您可能想要啓動顯示詳細信息的意圖,或者將該數據傳遞給活動(通過接口),並讓活動的實現將該更新傳遞給其他片段。 – kha

+0

@ cricket_007如果您閱讀該文檔,則通過活動和使用接口進行通信。在我看來,將片段直接相互對話(例如實例)打破了片段的邏輯/視圖對獨立片段的原則。 – kha

回答

2

是的,完全是反模式,請記住,您需要將Activity看作一個容器和片段作爲獨立的子屏幕,活動責任也是管理這些片段。 I.e .:如果你有一個Post活動,你可以有一個PostText片段,一個PostImage片段和所有由活動管理的片段,每個片段都附加到一個活動中。

+0

但是,如果您在小屏幕設備上使用「主詳細信息」視圖,則碎片會將活動回調替換爲另一個碎片。這是一種非常普遍的模式。 –

+0

謝謝你。那麼哪種方式更好?我從onCreate函數的活動中的服務器獲取數據並將數據傳遞給fragment以設置網格適配器。或者我從服務器中獲取數據片段和設置適配器中的數據並傳回活動? – user3882878

+0

@ cricket_007是的,它需要實現雙窗格..也 – user3882878

0

即使可以完成嵌套片段也不是常見做法。但是,最好將活動作爲所有碎片的中心容器。您可以使用EventBus(GreenRobot/Otto)分隔關注點,並在另一個類中執行所有API調用,並通過訂閱此事件來發送結果。

+0

我正在嘗試使用rxandroid。你有一些示例代碼?將數據傳回rxandroid的活動? – user3882878