Моє питання, крім очевидних спадкових відмінностей, які основні відмінності між Fragmentі FragmentActivity? До яких сценаріїв найкраще підходить кожен клас? Я намагаюся зрозуміти, чому обидва ці класи існують ...
Моє питання, крім очевидних спадкових відмінностей, які основні відмінності між Fragmentі FragmentActivity? До яких сценаріїв найкраще підходить кожен клас? Я намагаюся зрозуміти, чому обидва ці класи існують ...
Відповіді:
A 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, Activityоскільки це призведе до викиду винятку.
Що потрібно бути обережним: FragmentManagerі LoaderManagerмати окремі версії підтримки для FragmentActivity:
Якщо ви використовуєте Fragmentв Activity(HoneyComb і вище), зателефонуйте
getFragmentManager() отримати android.app.FragmentManagergetLoaderManager() отримати android.app.LoaderManagerякщо ви використовуєте Fragmentв FragmentActivity(до HoneyComb), зателефонуйте:
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 - це наша класична діяльність з підтримкою фрагментів, не більше того. Тому FragmentActivity потрібен, коли фрагмент буде приєднаний до діяльності.
Фрагмент свердловини - це хороший компонент, який копіює основні способи поведінки, але не є окремим компонентом додатка, як "Активність", і його потрібно приєднати до діяльності, щоб працювати.
Подивіться тут для більш детальної інформації
Подумайте про FragmentActivity як звичайний клас діяльності, який може підтримувати фрагменти. До медосховища клас активності не міг безпосередньо подати фрагменти, тому це потрібно в заходах, які використовують фрагменти.
Якщо ваш цільовий дистрибутив - стільники стільників і більше, ви можете замість цього активізувати активність.
Також фрагмент слід розглядати як "суб-діяльність". Вона не може існувати без діяльності. Завжди думайте про фрагмент як про суб-діяльність, і ви повинні бути хорошими. Таким чином, діяльність була б батьком, а фрагмент (и) - дитиною - символічними відносинами.
a FragmentActivity - це спеціальна діяльність, яка містить Fragment. У цих кількох словах я пояснив вам одне з головних важливих змін, яке разом із android 3.0 (HoneyComb), андроїд команда вставила в sdk для android.
Завдяки цим новим видам концепції ваш код та макет стають більш гнучкими та доступними. Якщо ви шукаєте в Google, є багато прикладів.