调用startActivityForResult()时片段的生命周期

时间:2014-05-18 05:05:05

标签: android fragment

我有一段代码调用startActivityForResult()来从Android库中选择一个图像。从调用startActivityForResult()和激活onActivityResult()时,我无法理解片段的生命周期。

我的活动检索并将信息加载到列表视图中。然后,它允许用户通过使用startActivityForResult()向相机/图库应用程序发送意图,将图片插入列表视图。这部分很完美。问题是当应用程序从intent返回时,列表会丢失其数据,并且必须再次检索信息。我已经设置了setRetainFragment(true)。

我的问题是,有没有办法在意图开始和返回时保留这些数据?我的猜测是在onPause()和onResumse()中保存它的一个实例,但我不太清楚它在这个事件中的生命周期如何。

提前谢谢!

1 个答案:

答案 0 :(得分:2)

我找到了解决问题的方法。为了回答关于生命周期的问题,片段确实通过onDetach(),onAttach(),onCreateView()进程。但是,因为我设置onRetainInstance(true),它会跳过onDestroy()和onCreate()。我的数据丢失的原因是因为我在onCreateView()期间检索数据,并且因为onCreateView()每次都被调用,所以检索数据也是如此。从这里,我所要做的就是在检索数据之前检查列表是否为空。

然而,另一个问题是我的变量没有保留。虽然列表被保留,因此我的listview保持不变,boolean和int变量被重置,我还不知道有这个解决方案。如果有人可以提供帮助,那就太好了!