![](/img/trans.png)
[英]Data loads Only from onStart not OnActivityCreated in Fragment [Not Solved]
[英]Activity onStart() being called before Fragment's onActivityCreated()
我遇到了一个问题,我的片段的onActivityCreated()
方法是在调用我的activity的onStart()
方法之后调用的。 这似乎意味着我的活动onCreate()
方法在onStart()
之后完成? 情况不是这样......可以吗? 在我的活动的生命周期中,我的片段的onActivityCreated()
被称为? 此外,如果我有多个片段,我如何控制片段的onActivityCreated()
调用的顺序?
在我的活动中:
@Override
protected void onStart() {
super.onStart();
methodA(); // this is called ...
}
在我的片段中:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
methodB(); // ... before this
}
在我的activity的onStart()方法被调用之后调用onActivityCreated()方法
请记住,onActivityCreated()方法只是来自活动的片段的回调。
这似乎意味着我的活动onCreate()方法在onStart()之后完成? 情况不是这样......可以吗?
错误! Activity和fragment是分开的,所以Activity中的onCreated()方法和片段中的onActivityCreated()方法不能相同。 如上所述,在Fragment中,它只是一个带有活动状态的回调映射。
让我们看看这张图片,以便更好地理解。
来自Google的官方文档: Activity onStart()
在活动变得对用户可见之前调用。 如果活动到达前台,则按onResume(),如果隐藏,则按onStop()。
片段回调:onActivityCreated()
在创建片段的活动并且实例化此片段的视图层次结构时调用。 一旦这些部分就位,它可用于进行最终初始化,例如检索视图或恢复状态。 对于使用setRetainInstance(boolean)保留其实例的片段也很有用,因为此回调告诉片段何时与新活动实例完全关联。 这是在onCreateView(LayoutInflater,ViewGroup,Bundle)之后和onViewStateRestored(Bundle)之前调用的。
最后一个:
此外,如果我有多个片段,我如何控制片段的onActivityCreated()调用的顺序?
这取决于您使用哪种方式将片段添加到活动中。 基本上,顺序将是添加的片段的顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.