我有应用程序,我有活动,只有很少的碎片。在那种状态下很容易。在Activity中,使用改造我向REST API发出请求,获取数据然后使用bundle将其传递给Fragments。 (使用bundle传递我的对象列表有点痛苦,但可以管理)
当我想要每隔x秒在片段中刷新数据时就会出现问题。通过描述的解决方案,我必须为每个请求重新创建Fragment,这是......愚蠢。
所以我有两个想法:
在Fragment中发出对REST API的所有请求。但我不知道它是否被认为是一个好的解决方案。
使用EventBus库在Activity中交换所有请求并交换数据。 (http://greenrobot.org/eventbus/)
如果其中一个想法好,或者我应该做一些完全不同的事情,你能告诉我吗?或者你能告诉我不同方法的利弊吗?
非常感谢您的回答!
答案 0 :(得分:1)
使您的片段与活动松散耦合,以便它可以与其他活动一起使用。根据谷歌 -
为了重用Fragment UI组件,您应该将每个组件构建为一个完全独立的模块化组件,以定义自己的布局和行为。一旦定义了这些可重用的片段,就可以将它们与Activity相关联,并将它们与应用程序逻辑相连接,以实现整个复合UI。
了解详情 - https://developer.android.com/training/basics/fragments/communicating.html?hl=ru
最好从Fragment请求网络数据。此外,如果您对从网络呼叫接收的活动中的数据有任何依赖性,那么您还可以使用回调将该数据发送回活动
答案 1 :(得分:0)
最好为HTTP调用提供服务。您可以从服务进行异步调用,并在您的活动或片段中实现侦听器接口。该侦听器可以与视图进行交互。
答案 2 :(得分:0)
我通常同意MmtBkn,但是因为你使用Retrofit,我认为从UI类执行HTTP请求至少不是一个坏习惯。在我看来,你应该从Fragment中提出这些请求,因为它包含将显示加载内容的视图。如果您考虑将Fragment放在另一个Activity中,您最终会得到执行HTTP请求的重复代码,并通过事件总线将数据发送到Fragment。