android - 刷新 fragment 回到上一个 fragment

标签 android android-fragments uinavigationcontroller android-room android-livedata

这就是我在我的应用程序中拥有的

  • 带有 ViewModel 和数据绑定(bind)的 2 个 fragment 的 Activity 。
  • 带有 Livedata 的房间数据库可不断更新 UI。
  • 导航 Controller 在 fragment 之间导航。
  • fragment #1 具有 RecyclerView(自定义对象列表)。
  • fragment #2 是插入或更新操作(事务)。

  • 一切都按预期工作,但有一件事我不知道为什么会发生。

    当我转到 fragment #2 以将数据插入或更新到房间数据库,然后使用(顶部或底部)后退按钮返回 fragment #1 时, fragment #1 不会重新加载并且数据不会更改(更新),直到我重新加载数据.

    在其他情况下,当我在同一 fragment 中插入或更新数据时,列表会立即更改。

    我必须在同一个 fragment 上进行插入和更新操作吗?

    我不能在其他 fragment 中执行此操作,当我返回列表 fragment 时,我发现数据已更新?

    请记住,它就像我希望的那样工作,但在某些时候我真的不知道它不再是了!!

    最佳答案

    搜索后,问题是我从包含 的存储库创建实例房间 数据库 , 所以所有 实时数据 删除了与数据库的连接
    解决方案是使用单例模式,这意味着在包含我的 fragment 的 Activity 的整个生命周期中只使用一个存储库实例和一个房间数据库实例。
    您可以通过多种方式做到这一点,我建议您使用 依赖注入(inject)
    我使用的工具是刀柄 Dagger here here

    关于android - 刷新 fragment 回到上一个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61070995/

    相关文章:

    android.widget.PopupWindow$PopupDecorView 在打开菜单的情况下旋转设备时泄漏

    android - 始终将 float 操作按钮放在顶部

    java - 通过 FragmentPagerAdapter 将数据从 Activity 传递到 ViewPager 的 Fragment

    ios - 如何以编程方式在 UINavigationController 中显示第二个模态 ViewController

    android - 在我的代码中没有获取图像的资源 ID

    android - 如何在viewflipper的android中检查以前的值

    android - 双方从sqlite同步数据库到网站

    android - 未注释的参数覆盖@NonNull 参数

    ios - Swift:跳过导航 Controller 堆栈中的第一个(和更多)屏幕

    ios - 我如何管理可能无休止地将 View Controller 推送到导航 Controller 堆栈? iOS