【发布时间】:2020-03-26 06:11:12
【问题描述】:
我有一个包含两个片段的活动,我可以通过底部导航菜单在片段之间导航。在他们两个中,我都有一个带有图像和文本的 reyclerView(数据由 FireBase 数据库检索)。
我在 MainActivity 中有以下代码(使用开关),它通过使用导航菜单替换了片段。 (这就是为什么它每次都重新创建整个片段并在我发现时再次检索数据。
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_space, selectedFragment).commit();
我想保存每个片段的状态(并允许用户将来手动刷新 recyclerView)但到目前为止我失败了。如何使片段不被重新创建?
提前谢谢你。
【问题讨论】:
-
如果您只想避免重复加载数据,您可以查看 MVVM 架构概念,例如Guide to app architecture 。在那里,您不会将数据存储在视图层中,而是存储在(自定义)存储库类中。 Fragment 将注册到可感知生命周期的 ViewModel,该 ViewModel 反过来将从存储库中获取数据。