2012-05-15 102 views

回答

255

FragmentActivity的截面,其具有:

  • 其自己的生命週期
  • 接收其自己的輸入事件
  • 可以同時Activity運行被添加或移除。

A Fragment必須始終嵌入Activity

Fragments不屬於HoneyComb(3.0)之前的API的一部分。如果您希望在針對HoneyComb之前的平臺版本的應用中使用Fragments,則需要將Support Package添加到您的項目中,並使用FragmentActivity來保存您的FragmentsFragmentActivity類具有處理Fragments的API,而HoneyComb之前的Activity類沒有。

如果你的項目的目標是蜂窩狀或更高版本而已,你應該使用Activity,而不是FragmentActivity握住你Fragments

一些細節:

使用android.app.FragmentActivity。使用android.support.v4.app.FragmentFragmentActivity。不要將支持包Fragment添加到Activity,因爲它會導致拋出異常。

要小心一件事:FragmentManagerLoaderManager有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佈局的一部分。它可以用作活動的隱形工作人員,不需要自己的用戶界面。

+5

但是,片段不需要成爲活動佈局的一部分;你也可以使用一個沒有自己UI的片段作爲活動的隱形工作者。 – uzay95

+1

@ uzay95謝謝你指出了這一點。我在最後添加了一個部分來提及它。 –

+0

@GunnarKarlsson我們應該添加片段到fragmentActivity? – Dhasneem

14

FragmentActivity是我們經典的帶有片段支持的Activity,僅此而已。因此,當片段將被附加到活動時,需要FragmentActivity。

Well Fragment是複製Activity的基本行爲的好組件,仍然不是像Activity這樣的獨立應用程序組件,而是需要附加到Activity才能工作。

here更多細節

+1

順便說一句,過時的答案,只適用於希望在API 11以前的設備上工作的應用程序。 – ToolmakerSteve

+0

@ToolmakerSteve能提供更多詳細信息嗎?如果可能,你可以用最新版本編輯答案嗎? –

1

一個FragmentActivity是包含片段一個特設的活動。 在這幾句話中,我已經解釋了你的主要重要變化之一,用android 3.0(HoneyComb),android團隊已經在android sdk中插入了。

有了這些新的概念,您的代碼和佈局變得更加靈活和可維護。如果你在google上搜索,有很多例子。

8

將FragmentActivity視爲可支持碎片的常規活動類。在蜂窩之前,一個活動類不能直接破壞碎片,所以這在使用碎片的活動中是必需的。

如果您的目標分佈爲Honeycomb及更高版本,則可以將其擴展爲Activity。

另外一個片段被認爲是「子活動」。沒有活動就無法存在。總是把一個片段看作一個子活動,你應該很好。所以活動將是父母和片段(s)的孩子類型的符號關係。