如何在片段B中执行操作后更新片段A.

时间:2014-02-11 13:48:31

标签: java android android-fragments android-fragmentactivity

我有3个片段A,B&下进行。

A包含一个项目网格,B片段有一个表单来添加数据。所有数据都移入/移出服务器。

C片段是偏好片段。

当活动开始时调用片段的onCreateView方法,我从服务器获取最新数据并膨胀到我的网格中。

当我滑动到B片段并添加一些新数据时。我刷回A片段网格后不会更新。我试图在片段A的onResume方法中调用我的更新方法。但没有帮助。

但是当我滑动到C片段并向后滑动到B片段时,列表会更新。

2 个答案:

答案 0 :(得分:2)

ViewPager中的片段已缓存。

使用较新API的正确方式为LocalBroadcastManagerGreenDroidOtto或任何其他事件总线库。

现在,除非您的片段数== getOffscreenPageLimit(),否则会出现问题,因为您必须在onPause()取消注册广播接收器/事件,但这样做会使您的片段无法响应广播。在Otto和GreenDroid中,有一些粘性事件会触发并“粘住”,以便稍后当你的片段恢复时,它可以查找粘性事件,消耗(否则它们会留在那里)它们,以及相应地更新它的内容。

使用Eventbus库还有很多优点:

  1. 解耦UI组件
  2. 摆脱各地的听众
  3. 您的活动将不再是代理,片段可以直接与对方交谈

答案 1 :(得分:0)

根据文档,片段之间的通信是通过接口完成的。

查看this答案或documentation

中的示例