关于Fragment生命周期与其所属Activity的关系

28

情况 我的活动在异步操作上等待,等异步操作返回后,需要将信息传递给其中的2个片段。

要求 1. 两个片段都需要完成它们的 onCreateView 调用才能加载它们的布局, 2. 它们需要被附加到它们的活动中,以便 getActivity() 起作用。

我在两个片段中编写了一个 setData() 方法,并正在寻找在活动生命周期的“正确”位置来调用它们。

在活动的 onCreate() 中不起作用,在活动的 onStart() 中不起作用,在片段的 onStart() 中也不起作用。

什么都不起作用,我这里缺少什么?

5个回答

16

这张图片有助于理解两个生命周期。

很多人抱怨这个生命周期过于复杂,而且这种说法有一定道理。在2018年的Google I/O大会上,他们建议使用架构组件框架。请查看此文档

输入图像描述


8
为什么,谷歌,为什么?这就是为什么没有人喜欢碎片 :D - markcheeky

16

官方文档关于Fragment生命周期进行了明确的解释 - 请先参考文档,如有不清楚之处再提出后续问题。


谢谢,我不知道我怎么会忽略那个。 - Vikram Bodicherla
我有一个Activity1--->Fragment1--->(嵌套)Fragment2<===>Activity2的结构。当我在Activity2时,如果我按下返回按钮,它将回到fragment2(Activity1),这时我需要知道Fragment2中哪个方法被触发了。我希望在用户单击Activity2上的返回按钮时刷新Fragment2内容! - LOG_TAG
@LOG_TAG:“onResume”将被触发。 - Mehul Joisar

0

onAttachFragment() - 在 onCreate() - 活动之前和 onAttach() - 片段之后调用活动。


0

当你在Activity2---->backpress--->Fragment2(Activity1)时,意味着从fragment2再次附加到Activity1...因此在OnAactivityCreated()方法中,Activity1已经完全加载....所以在那里我们可以调用setData()方法来设置你的Activity1...


-1
在你的片段 onStop 时调用 onDestroy。这应该在片段启动时调用 onCreate。 如果这对你的问题是一个理想的解决方案,请告诉我。

1
不应该调用onDestroy和onStop。它们是活动和片段生命周期中的回调函数。 - Vikram Bodicherla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接