В чем разница между Fragment и FragmentActivity?

Мой вопрос отличается от очевидных различий наследования, каковы основные различия между Fragment и FragmentActivity? К какому сценарию подходят каждый класс? Я пытаюсь понять, почему оба этих класса существуют...

Ответ 1

A Fragment - это раздел Activity, который имеет:

  • собственный жизненный цикл
  • получает свои входные события
  • может быть добавлен или удален во время выполнения Activity.

A Fragment всегда должен быть встроен в Activity.

Fragments не являются частью API до HoneyComb (3.0). Если вы хотите использовать Fragments в приложении, ориентированном на версию платформы до HoneyComb, вам необходимо добавить Пакет поддержки в свой проект и использовать FragmentActivity, удерживая Fragments. Класс FragmentActivity имеет API для работы с Fragments, тогда как класс Activity, до HoneyComb, не работает.

Если ваш проект нацелен только на HoneyComb или новее, вы должны использовать Activity, а не FragmentActivity, чтобы удерживать Fragments.

Некоторые сведения:

Используйте android.app.Fragment с Activity. Используйте android.support.v4.app.Fragment с помощью FragmentActivity. Не добавляйте пакет поддержки Fragment в Activity, так как это вызовет исключение.

. Будьте осторожны: FragmentManager и LoaderManager имеют отдельные версии поддержки для FragmentActivity:

Если вы используете Fragment в Activity (HoneyComb и выше), вызовите

  • getFragmentManager(), чтобы получить android.app.FragmentManager
  • getLoaderManager(), чтобы получить android.app.LoaderManager

если вы используете Fragment в FragmentActivity (pre-HoneyComb), вызовите:

  • getSupportFragmentManager(), чтобы получить android.support.v4.app.FragmentManager.
  • getSupportLoaderManager(), чтобы получить android.support.v4.app.LoaderManager

поэтому не do

//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. Он может использоваться как невидимый работник для своей деятельности, без собственного интерфейса.

Ответ 2

FragmentActivity - это наша классическая деятельность с поддержкой фрагментов, не более того. Поэтому FragmentActivity необходимо, когда фрагмент будет прикреплен к Activity.

Фрагмент скважины - хороший компонент, который копирует основные действия Activity, все еще не является автономным компонентом приложения, таким как Activity, и должен быть привязан к Activity для работы.

Посмотрите здесь для более подробной информации

Ответ 3

Подумайте, что FragmentActivity является обычным классом Activity, который может поддерживать фрагменты. До сотовой связи класс активности не мог напрямую сверять фрагменты, поэтому это необходимо для действий, которые используют фрагменты.

Если ваша целевая дистрибуция - Honeycomb, а кроме того, вы можете продлить действие вместо нее.

Также фрагмент следует рассматривать как "суб-активность". Он не может существовать без активности. Всегда думайте о фрагменте как суб-активности, и вы должны быть хорошими. Таким образом, активностью будет родительский и фрагмент дочернего типа символических отношений.

Ответ 4

a FragmentActivity - это ad-hoc-активность, содержащая фрагмент. В этих нескольких словах я объясняю вам одно из главных важных изменений, которое с помощью андроида 3.0 (HoneyComb), сборщик андроидов вставил в sroid sroid.

Благодаря этой новой концепции ваши фрагменты кода и макета становятся более гибкими и удобными. Если вы ищете в google, есть много примеров.