我在片段中有一个RecyclerView
,最初是隐藏的。当用户单击按钮时,我将RecyclerView
的可见性设置为true,并在ArrayList
上显示我的一些数据。
当我在顶部移动另一个片段(我在backStack中添加RecyclerView
的前一个片段)时,问题就开始了:如果我从新片段中单击后一个片段({{1 }}}是可见的并且在RecyclerView
我记录了数据集的值,我使用了recyclelerView,一切都在那里,但recyclerView是空的(只显示了页脚项目)。
如果我们使用onCreateView()
和RvFragment
调用RecyclerView
片段来到后台堆栈然后离开架构:
NextFragment
以及来自 (back pressed)
RvFragment ----------> NextFragment ------------> RvFragment
的代码:
onCreateView()
您可以在上面的代码中看到日志语句,我可以确认数据是否存在。谢谢!
答案 0 :(得分:-1)
我不确定我是如何理解您如何设置片段堆栈但只是为了确定:如果片段仍在堆栈中,当您按下后退按钮时,将不会再次调用onCreateView。
https://developer.android.com/training/basics/fragments/fragment-ui.html#Replace
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
只有onStart()会。
如果您想再次调用onCreateView,则需要使用
FragmentTransaction.replace(NextFragment)
没有addToBackStack(),但这意味着整个片段将从头开始重新创建。可能不是你想要的,特别是如果你从网络服务获取数据。
或者,要在每次回到它时完全重新创建片段,您可以完全删除它:
FragmentTransaction.remove(RvFragment)
然后推送你的下一个片段