2016-03-04 69 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