在调用我的活动的onActivityCreated()
方法后,我遇到了我的片段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
}
答案 0 :(得分:9)
在调用我的activity onStart()方法之后调用 onActivityCreated()方法
请记住,onActivityCreated()方法只是对活动中片段的回调。
这似乎意味着我的活动onCreate()方法在onStart()之后完成?情况不是这样......可以吗?
错误!活动和片段是分开的,因此Activity中的onCreated()方法和片段中的onActivityCreated()方法不能相同。如上所述,在Fragment中,它只是一个带有活动状态的回调映射。
让我们看看这张照片,以便更好地理解。
来自Google的官方文件: 活动onStart()
在活动对用户可见之前调用。 如果活动到达前台,则按onResume(),如果隐藏,则按onStop()。
片段回调:onActivityCreated()
在创建片段的活动并且实例化此片段的视图层次结构时调用。一旦这些部分就位,它可用于进行最终初始化,例如检索视图或恢复状态。对于使用setRetainInstance(boolean)保留其实例的片段也很有用,因为此回调告诉片段何时与新活动实例完全关联。这是在onCreateView(LayoutInflater,ViewGroup,Bundle)之后和onViewStateRestored(Bundle)之前调用的。
最后一个:
此外,如果我有多个片段,我如何控制片段的onActivityCreated()调用的顺序?
这取决于您使用哪种方式将片段添加到活动中。基本上,订单将是添加片段的顺序。