我的問題除了明顯的遺傳差異之外,Fragment
和FragmentActivity
之間的主要區別是什麼?每個課程最適合哪些場景?我試圖理解爲什麼這兩個類都存在...片段與片段活動之間的區別
回答
甲Fragment
是Activity
的截面,其具有:
- 其自己的生命週期
- 接收其自己的輸入事件
- 可以同時
Activity
運行被添加或移除。
A Fragment
必須始終嵌入Activity
。
Fragments
不屬於HoneyComb(3.0)之前的API的一部分。如果您希望在針對HoneyComb之前的平臺版本的應用中使用Fragments
,則需要將Support Package添加到您的項目中,並使用FragmentActivity
來保存您的Fragments
。 FragmentActivity
類具有處理Fragments
的API,而HoneyComb之前的Activity
類沒有。
如果你的項目的目標是蜂窩狀或更高版本而已,你應該使用Activity
,而不是FragmentActivity
握住你Fragments
。
一些細節:
使用android.app.Fragment
與Activity
。使用android.support.v4.app.Fragment
與FragmentActivity
。不要將支持包Fragment
添加到Activity
,因爲它會導致拋出異常。
要小心一件事:FragmentManager
和LoaderManager
有FragmentActivity單獨支持版本:
如果您使用的是一個Activity
一個Fragment
(蜂窩及以上),撥打
getFragmentManager()
得到android.app.FragmentManager
getLoaderManager()
得到android.app.LoaderManager
如果您使用的FragmentActivity
(預蜂窩)一Fragment
,請致電:
getSupportFragmentManager()
得到android.support.v4.app.FragmentManager
。getSupportLoaderManager()
得到android.support.v4.app.LoaderManager
所以,不做
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
或
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
還需要了解的是,當一個片段已被嵌入一個Activity
它不一定是Activity
佈局的一部分。它可以用作活動的隱形工作人員,不需要自己的用戶界面。
FragmentActivity是我們經典的帶有片段支持的Activity,僅此而已。因此,當片段將被附加到活動時,需要FragmentActivity。
Well Fragment是複製Activity的基本行爲的好組件,仍然不是像Activity這樣的獨立應用程序組件,而是需要附加到Activity才能工作。
看here更多細節
順便說一句,過時的答案,只適用於希望在API 11以前的設備上工作的應用程序。 – ToolmakerSteve
@ToolmakerSteve能提供更多詳細信息嗎?如果可能,你可以用最新版本編輯答案嗎? –
一個FragmentActivity是包含片段一個特設的活動。 在這幾句話中,我已經解釋了你的主要重要變化之一,用android 3.0(HoneyComb),android團隊已經在android sdk中插入了。
有了這些新的概念,您的代碼和佈局變得更加靈活和可維護。如果你在google上搜索,有很多例子。
將FragmentActivity視爲可支持碎片的常規活動類。在蜂窩之前,一個活動類不能直接破壞碎片,所以這在使用碎片的活動中是必需的。
如果您的目標分佈爲Honeycomb及更高版本,則可以將其擴展爲Activity。
另外一個片段被認爲是「子活動」。沒有活動就無法存在。總是把一個片段看作一個子活動,你應該很好。所以活動將是父母和片段(s)的孩子類型的符號關係。
- 1. 兩個C片段之間的區別
- 2. Android:活動與片段(片段頂部)
- 3. TabHost與片段和片段活動
- 4. 片段與活動之間的核心區別是什麼?哪些代碼可以寫入片段?
- 5. 片段活動片段內
- 6. 片段和活動之間的通信
- 7. 片段和活動之間的溝通
- 8. 活動和片段之間的數據
- 9. 片段,活動,片段活動
- 10. Android:活動與片段活動之間的溝通
- 11. 在活動之間傳遞片段
- 12. 活動到片段1,片段1到片段2片段2到活動
- 13. 活動片段
- 14. Android片段之間的片段數據
- 15. 活動或片段與NavigationDrawer
- 16. 活動與片段執行
- 17. 片段動畫:setCustomAnimations和setTransitionStyle之間的區別
- 18. 在片段之間滑動
- 19. 碎片/片段活動之間的轉換
- 20. 片段標籤和片段活動
- 21. 兩個片段之間的通信,每個片段都有自己的活動
- 22. Kotlin中活動與片段之間的溝通
- 23. 使用界面從活動與片段之間的溝通
- 24. 獲取活動和片段之間的數據與GOOGLEMAPS
- 25. 片段與活動之間的通信流程
- 26. Android的方向更改與片段處理的片段活動
- 27. 是好去接口的片段和片段活動之間溝通
- 28. 大活動片段
- 29. 片段和活動
- 30. 片段或活動?
但是,片段不需要成爲活動佈局的一部分;你也可以使用一個沒有自己UI的片段作爲活動的隱形工作者。 – uzay95
@ uzay95謝謝你指出了這一點。我在最後添加了一個部分來提及它。 –
@GunnarKarlsson我們應該添加片段到fragmentActivity? – Dhasneem