我有 3 个 fragment A、B 和 C。
A 包含一个项目网格,B fragment 有一个添加数据的表单。所有数据移入/移出服务器。
C fragment 是首选 fragment 。
当 Activity 开始时, fragment 的 onCreateView 方法被调用,我从服务器获取最新数据并膨胀到我的网格中。
当我滑动到 B fragment 并添加一些新数据时。在我滑回 A fragment 网格后,它没有得到更新。我试图在 Fragment A 的 onResume 方法中调用我的更新方法。但没有帮助。
但是当我滑动到 C fragment 并滑动回到 B fragment 时,列表会更新。
最佳答案
ViewPager
中的 fragment 被缓存。
使用较新 API 的正确方法是 LocalBroadcastManager
或者 GreenDroid , Otto或任何其他事件总线库。
现在,除非你的 fragment 计数 == getOffscreenPageLimit()
,否则会有问题,因为你肯定必须在 onPause()
取消注册你的广播接收器/事件,但这样做会使您的 fragment 不会对广播使用react。在 Otto 和 GreenDroid 中,有会触发并“粘住”的粘性事件,以便稍后当您的 fragment 恢复时,它可以查找粘性事件,消耗(否则它们会留在那里)它们,以及相应地更新它的内容。
使用 Eventbus 库也有很多优点:
- 解耦 UI 组件
- 到处摆脱听众
- 您的 Activity 将不再需要代理, fragment 可以直接相互对话
关于java - 在 fragment B 中执行操作后如何更新 fragment A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21703682/