我遇到一个问题,我的片段在onActivityCreated()
在我的活动之后调用方法onStart()
方法被调用。这似乎意味着我的活动onCreate()
方法完成后onStart()
?不可能是这样的……可以吗?当我的 Activity 的生命周期是我的 Fragment 时onActivityCreated()
叫?此外,如果我有多个片段,如何控制片段的顺序onActivityCreated()
calls?
在我的活动中:
@Override
protected void onStart() {
super.onStart();
methodA(); // this is called ...
}
在我的片段中:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
methodB(); // ... before this
}
onActivityCreated() 方法在我的活动的 onStart() 方法被调用后被调用
请记住, onActivityCreated() 方法只是活动中片段的回调。
这似乎意味着我的活动的 onCreate() 方法在 onStart() 之后完成?不可能是这样的……可以吗?
Wrong!Activity和fragment是分开的,所以Activity中的onCreated()方法和fragment中的onActivityCreated()方法不能相同。如上所述,在 Fragment 中它只是一个与 Activity 状态的回调映射。
Let's have a look at this picture to have a better understanding.
![enter image description here](https://i.stack.imgur.com/cJ3QW.png)
谷歌官方文档中:活动 onStart()
在活动对用户可见之前调用。
如果 Activity 进入前台,则接着是 onResume();如果 Activity 变为隐藏,则接着是 onStop()。
片段回调:onActivityCreated()
当创建片段的活动并且实例化该片段的视图层次结构时调用。一旦这些部分就位,它可用于进行最终初始化,例如检索视图或恢复状态。对于使用 setRetainInstance(boolean) 保留其实例的片段也很有用,因为此回调会告诉片段何时与新活动实例完全关联。这是在 onCreateView(LayoutInflater, ViewGroup, Bundle) 之后和 onViewStateRestored(Bundle) 之前调用的。
最后一个:
此外,如果我有多个片段,如何控制片段的 onActivityCreated() 调用顺序?
这取决于您使用哪种方式将片段添加到活动中。基本上顺序将是添加片段的顺序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)