2013-08-20 54 views
1

該文檔以及在Android開發現場片段定義,但我在片段澄清Android文檔:片段

http://developer.android.com/guide/components/fragments.html

onAttach()所述片段具有被叫有疑問大約一個特定生命週期方法與 活動(活動在此傳遞)相關聯。

這種關聯在內部有什麼作用?

而且我曾經到過這裏

http://grepcode.com/file/repo1.maven.org/maven2/com.google.android/support-v4/r7/android/support/v4/app/Fragment.java?av=f

默認構造函數。每個片段必須有一個空的構造函數,所以它可以在恢復其活動狀態時被實例化。 強烈建議子類沒有帶參數的其他構造函數 ,因爲當 片段被重新實例化時,將不會調用這些構造函數;相反,參數可以由 調用者用setArguments(android.os.Bundle)提供,隨後由 片段通過getArguments()檢索。應用程序通常不應該使用 實現構造函數。第一個應用程序代碼運行,其中 片段準備好用於onAttach(android.app.Activity), 點,其中片段實際上與其活動相關聯。 某些應用程序也可能想要實現 onInflate(android.app.Activity,android.util.AttributeSet,android.os.Bundle) 以從佈局資源中檢索屬性,但在此應該注意 ,因爲這發生在片段連接到它的 }

但同樣的術語,但沒有確切的解釋。

+0

你可以添加行到你的grepcode樣本,所以你不必搜索年齡 – bofredo

+0

肯定會現在做 – nish1013

回答

2

A Fragment只不過是一個組件,可以附加到Activity或從活動分離。換句話說,Activity就像片段的主機。

爲了知道什麼時候該片段被連接,或從主機活動脫離,它提供了2種回調方法:
onAttach() - 由系統調用 - 將所述片段與活動
onDetach()當被系統調用當從活動中刪除片段時

當他們說「片段已與活動相關聯」時,這意味着該片段已添加到活動中,並且這意味着從此處您可以撥打getActivity()

1

這裏的問題是這個關聯在內部有什麼作用?

我在FrgmentManager類中找到下面的代碼,什麼是我一直在尋找, 這個節目到底有以下協會製成,

片段已與該活動相關的

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/app/FragmentManager.java

   f.mActivity = mActivity; 
       f.mParentFragment = mParent; 
       f.mFragmentManager = mParent != null 
         ? mParent.mChildFragmentManager : mActivity.mFragments; 
       f.mCalled = false; 
       f.onAttach(mActivity); 

上面的代碼沒有分配的片段的關聯活動,然後調用onAttach(..)