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