Разница между фрагментом и фрагментацией

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

Solutions Collecting From Web of "Разница между фрагментом и фрагментацией"

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

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

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 пакета поддержки в действие, так как это вызовет исключение Исключения.

Необходимо соблюдать осторожность: FragmentManager и LoaderManager имеют отдельные версии поддержки для FragmentActivity:

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

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

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

  • getSupportFragmentManager() чтобы получить getSupportFragmentManager() android.support.v4.app.FragmentManager .
  • getSupportLoaderManager() чтобы получить 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 – наша классическая деятельность с поддержкой фрагментов, не более того. Поэтому FragmentActivity необходимо, когда фрагмент будет прикреплен к Activity.

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

Посмотрите подробнее

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

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

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

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

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