[英]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.