运行Fragment和Activity之间的通信

时间:2015-09-22 06:07:19

标签: android android-activity fragment

我们正在为我的项目使用Retrofit和Activeandroid。

目前我们正面临一个问题。 我们在项目中遵循的模式是,我们从服务器获取数据并将其保存到本地数据库中,保存数据后,我们调用从数据库中获取数据的例程并填充UI,这一切都发生在单个Activity中。

现在我们有一个活动,它产生3个服务器请求,并且由此增加了活动中的代码量。

我们正在尝试通过为活动创建片段并负责获取数据和向Fragment显示数据来减少活动代码。休息电话将通过活动进行。现在,一旦从所有3个请求加载数据,我们需要通知片段有关加载数据的信息,这是最好的方法。

甚至可以在加载后将数据发送到片段..或者我们所遵循的方法不正确..

请指导我们..

EDIT1 我读到了关于EventBus的信息。事件总线可以解决这个问题,否则会影响效率。

3 个答案:

答案 0 :(得分:2)

如果您要在Fragment中存储这些Activity个实例,那么这将更容易。

1)在loadNewdata(DataType data)中创建Fragment方法。

2)在Fragment

中收到服务器的回复后,将数据传递到Activity
((YourFragment)fragment).loadNewdata(yourData);

答案 1 :(得分:0)

我建议使用Otto.

通过这种方式,您无需将数据存储在本地数据库中(如果您不需要它)。只要您从rest API收到响应,就可以发布您的响应。由于Otto还提供了在片段/活动之间共享自定义对象的功能。它还可以帮助您使代码模块化。 你会找到一个有效的例子here& here.

答案 2 :(得分:0)

您可以使用Interfaces并将数据发送到activity.when响应返回时传递参考,以显示哪些片段数据需要填充UI。