运行 片段与 Activity 之间的通信

Communication between running Fragment and Activity

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

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

现在我们有一个 activity 发出 3 个服务器请求,因此 activity 中的代码量增加了。

我们正在尝试通过为 activity 创建片段并将获取数据和显示数据的责任交给片段来减少 Activity 代码。休息电话将在 activity 之前进行。现在,一旦从所有 3 个请求中加载了数据,我们需要通知片段有关数据已加载的信息,最好的方法是什么。

是否有可能在片段加载后将数据发送到片段..或者我们遵循的方法不正确..

请在这方面指导我们..

编辑 1 我读到了 EventBus。事件总线能不能解决这个问题,不然会影响效率

如果您将那些 Fragment 个实例存储在 Activity 中,那么它会容易得多。

1) 在 Fragment.

中创建 loadNewdata(DataType data) 方法

2) 在您的 Activity

中得到服务器的响应后,将数据传递到 Fragment
((YourFragment)fragment).loadNewdata(yourData);

我建议使用 Otto.

通过这种方式,您不需要将数据存储在本地数据库中(如果您不想要的话)。只要简单地post您从 rest API 收到的回复即可。 As Otto 还提供了在 fragments/Activity 之间共享自定义对象的功能。它还可以帮助您使代码模块化。 你会找到一个工作示例 here & here.

您可以为此使用接口并将数据发送到 activity.when 响应返回传递引用以显示需要填充哪些片段数据 UI。