从backStack恢复片段时,RecyclerView为空

时间:2016-12-28 16:35:24

标签: android android-fragments android-recyclerview

我在片段中有一个RecyclerView,最初是隐藏的。当用户单击按钮时,我将RecyclerView的可见性设置为true,并在ArrayList上显示我的一些数据。

当我在顶部移动另一个片段(我在backStack中添加RecyclerView的前一个片段)时,问题就开始了:如果我从新片段中单击后一个片段({{1 }}}是可见的并且在RecyclerView我记录了数据集的值,我使用了recyclelerView,一切都在那里,但recyclerView是空的(只显示了页脚项目)。

如果我们使用onCreateView()RvFragment调用RecyclerView片段来到后台堆栈然后离开架构:

NextFragment

以及来自 (back pressed) RvFragment ----------> NextFragment ------------> RvFragment 的代码:

onCreateView()

您可以在上面的代码中看到日志语句,我可以确认数据是否存在。谢谢!

1 个答案:

答案 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) 

然后推送你的下一个片段