Разница между активностью и активностью фрагмента

228

Я работал на фрагментах и наткнулся на две вещи Activityи FragmentActivityкоторые несколько раз использовали. Я хочу знать , что есть какая -то разница между этими двумя, потому что , когда я изменил Activityс FragmentActivity, это не имело никакого влияния на приложении.

Новобранец
источник

Ответы:

316

A FragmentActivityявляется подклассом Activity, созданным для пакета поддержки Android .

FragmentActivityКласс добавляет пару новых методов для обеспечения совместимости со старыми версиями Android, но кроме этого, там действительно не так много разницы между ними. Просто убедитесь, что вы изменили все звонки на getLoaderManager()и getFragmentManager()на getSupportLoaderManager()и getSupportFragmentManager()соответственно.

Алекс Локвуд
источник
4
Эй, я не изменил вызовы getSupportLoaderManager () и getSupportFragmentManager () .. но все же он работает нормально.
Новичок
31
Вот что делает его таким опасным: P. FragmentActivityнаследует getLoaderManagerи getFragmentManagerметоды из Activityи в результате компилятор не будет жаловаться. Скорее всего, вы импортируете неправильные LoaderManagerи FragmentManagerклассы тоже. Убедитесь, что вы импортируете эти классы из пакета поддержки ( android.support.v4.app), а не из Android SDK ( android.app).
Алекс Локвуд
1
Можно ли сказать, что если мы хотим использовать фрагменты для версии Android 2.x, нам нужно использовать FragmentActivity nad для версии, которая поддерживает фрагменты, нам нужно использовать Activity.
Новобранец
55
Я думаю, что вы говорите правильно. Но чтобы быть на 100% ясным ... используйте, Activityесли вы используете android.app.Fragment; используйте, FragmentActivityесли вы используете android.support.v4.app.Fragment. Никогда не присоединяйте a android.support.v4.app.Fragmentк a android.app.Activity, так как это вызовет исключение.
Алекс Локвуд
13
Сначала попробуйте этот урок (как использовать Fragmentsв приложении). Затем перейдите к этому руководству (как использовать Fragments из пакета поддержки). Также стоит прочитать документацию на сайте разработчиков.
Алекс Локвуд
4

FragmentActivityявляется частью библиотеки поддержки , в то Activityвремя как класс по умолчанию платформы. Они функционально эквивалентны.

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

Сэмюэл Питер
источник
1
Примечание: minSdkVersionиз библиотеки поддержки 14 начиная с версии 26.xx
Eugen Pechanec