java - 在 fragment B 中执行操作后如何更新 fragment A

标签 java android android-fragments android-fragmentactivity

我有 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 库也有很多优点:

  1. 解耦 UI 组件
  2. 到处摆脱听众
  3. 您的 Activity 将不再需要代理, fragment 可以直接相互对话

关于java - 在 fragment B 中执行操作后如何更新 fragment A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21703682/

相关文章:

android - VLC 实时 http 流式传输到 Android

android - 选项卡在第二次返回 fragment 时显示空白 fragment

android - 导航到另一个 Fragment 时,Fragment 中的 RecyclerView 崩溃

java - 通过 JDBC URL 使用 TestContainers DB 但与 @Rule 一起使用时出错

java - request.getParameterValues在jsp页面中获取null

android - 强制编辑文本在 ScrollView 中占据全屏

android - 将参数传递给 XML 布局中定义的 fragment

Java:JIT 方法内联

java - Android Room Sqlite 没有这样的列,而不是在 WHERE 条件下使用等号 (=)

android - 如何区分 android ScrollView 的最终用户滚动与程序滚动?