当前位置: 首页 > 知识库问答 >
问题:

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

笪成周
2023-03-14

我有一段代码,调用startActivityForResult()从Android gallery中挑选图像。在调用startActivityForResult()和激活onActivityResult()时,我很难理解片段的生命周期。

“我的活动”检索信息并将其加载到listview。然后,它允许用户通过使用startActivityForResult()向照相机/多媒体资料应用程序发送意图,将图片插入列表视图。这部分工作得很好。问题在于,当应用程序从意图返回时,列表会丢失其数据,并且必须再次检索信息。我已经设置了错误(true)。

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

提前谢谢你!

共有1个答案

屠德宇
2023-03-14

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

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

 类似资料:
  • 我想了解Android中活动生命周期和片段生命周期之间的相互作用,所以我决定启动一个新项目并从这个页面复制代码 然后我想,为了提高我的理解力,在平板电脑上测试它,改变它的方向,看看它发生了什么(尽管可能不是为了这个目的)。通过logcat,我跟踪在活动和国家/地区片段上触发的主要事件,例如在activity Oncreate中,我写道: 这是我从纵向视图开始,然后旋转时得到的结果: TAG:活动:

  • 我正在使用以下方法通过显示/隐藏片段(在我的NavigationDrawer中)在片段之间切换。 我不清楚的是,当我显示或隐藏碎片生命周期的哪个方法被调用?(由于没有onShow()或onHide()这样的方法,我不太确定该使用什么)。我想在显示和隐藏某个片段时执行特定的操作。

  • 片段B 奥纳塔奇 OnCreate 停止-片段不可见。宿主活动已停止,或者片段已从活动中移除,但已添加到后堆栈中。停止的片段仍处于活动状态(系统保留所有状态和成员信息)。但是,它对用户不再可见,如果活动被杀死,它将被杀死。 这是否意味着当在同一活动中添加新片段时,不调用当前片段的方法? 然后在片段B中使用 我所期待的是? 片断A的onStart方法被调用,因为片断A现在可见 案例2 片段A 停顿

  • 在我的调试中,我注意到在片段上首先调用onpause/onstart/onstop/ondestroy,然后在它的活动上调用onResume,而onResume则相反--活动的onResume在它的片段之前首先调用。 为什么活动和片段之间的onpause/onstart/onstop与onResume的顺序不同?

  • 每当一个片段显示给用户时,我需要执行一些代码。 通过查看API,我能看到的最接近的钩子方法是onResume。但是,从我的代码调试来看,当用户选择back-button返回到先前显示的片段时,似乎没有调用onResume。 为了澄清我看到的行为: 我有一个“parent”活动,它在ActionBar中配置选项卡...和2个片段F1和F2。 用户选择一个选项卡,F1被加载到活动中。按下按钮,用户就可

  • 我在Nexus9上遇到了一个问题。(系统版本AndroidMarshmallow)在AndroidMarshmallow之前的Android系统上,当包含fragmentA的活动状态停止时,将调用fragmentA顶部回调。当包含fragmentA的活动状态被销毁时,将调用fragmentA回调onDestroyView、onDestroy和onDetach。官方网站上描述了这些过程 最近,我发现