簡體   English   中英

在Fragment的onActivityCreated()之前調用onStart()的活動

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM