Я пришел из iOS, где это легко, а вы просто используете UIViewController. Однако в Android все выглядит намного сложнее, с определенными компонентами UIC для определенных уровней API. Я читаю BigNerdRanch для Android (книге примерно 2 года), и они предлагают использовать ее Activity
для размещения FragmentActivities
. Тем не менее, я думал, что Activity
устарела.
Так что для API уровня 22 (с минимальной поддержкой API уровня 15 или 16), что именно я должен использовать как для размещения компонентов, так и для самих компонентов? Есть ли применение для всех этих, или я должен использовать один или два почти исключительно?
FragmentActivity
. Вы только хозяинFragment
с. В новых версиях Android самActivity
класс был обновлен для непосредственного размещения их. Для поддержки старых версийFragmentActivity
была введена.Activity
была поддержкаActionBar
. Это было поддержано на более старых версиях доActionBarActivity
первой, которая теперь устарела и заменена наAppCompatActivity
. Поскольку оба эти класса расширяются,FragmentActivity
они также поддерживают хостингFragment
.Ответы:
Нет.
Activity
это базовая линия. Любая деятельность наследуетсяActivity
прямо или косвенно.FragmentActivity
для использования с Backport фрагментов найдены вsupport-v4
иsupport-v13
библиотеках. В API Level 11 была добавлена нативная реализация фрагментов, которая ниже предложенных вамиminSdkVersion
значений. Единственная причина, по которой вам нужно было бы рассмотретьFragmentActivity
конкретно, это если вы хотите использовать вложенные фрагменты (фрагмент, содержащий другой фрагмент), поскольку это не поддерживалось в собственных фрагментах до API уровня 17.AppCompatActivity
это изappcompat-v7
библиотеки. Как правило, это предлагает бэкпорт панели действий. Поскольку встроенная панель действий была добавлена в API Level 11, вам это не нужноAppCompatActivity
. Тем не менее, в текущих версияхappcompat-v7
также добавлен ограниченный бэкпорт эстетики Material Design с точки зрения панели действий и различных виджетов. Есть плюсы и минусы использованияappcompat-v7
, выходящие далеко за рамки этого конкретного ответа о переполнении стека.ActionBarActivity
старое имя базовой активности отappcompat-v7
. По разным причинам они хотели сменить имя. Если какая-либо сторонняя библиотека, которую вы используете, настаивает наActionBarActivity
, вы должны предпочестьAppCompatActivity
болееActionBarActivity
.Итак, учитывая ваш
minSdkVersion
в 15-16 диапазоне:Если вы хотите, чтобы внешний вид Material Design, используйте
AppCompatActivity
Если нет, но вы хотите вложенные фрагменты, используйте
FragmentActivity
Если нет, используйте
Activity
Просто добавив из комментария как примечание:
AppCompatActivity
расширяетFragmentActivity
, так что любой, кто должен использовать функцииFragmentActivity
могут использоватьAppCompatActivity
.источник
FragmentActivity
является предкомAppCompatActivity
. Хотя я не рекомендую использовать вложенные фрагменты, поскольку вложенные фрагменты работают вообще, ониAppCompatActivity
будут поддерживать вложенные фрагменты.Activity
получение самой последней версии,support-v7
то есть не поддерживающего конструкцию материала. Моя цель - мин 19, цель 25Theme.Material
, вам нужноminSdkVersion
21 или выше.Activity
является базовым классом для всех других видов деятельности, я не думаю, что это будет устаревшим. Отношения между ними:Activity
<-FragmentActivity
<-AppCompatActivity
<-ActionBarActivity
«<-» означает наследование здесь. Ссылка сказала
ActionBarActivity
осуждается, используйтеAppCompatActivity
вместо этого.Таким образом, использование
AppCompatActivity
всегда является правильным выбором. Различия между ними:Activity
является основным.Activity
,FragmentActivity
предоставляет возможность использованияFragment
.FragmentActivity
,AppCompatActivity
предоставляет функции дляActionBar
.источник
2019: использование
AppCompatActivity
На момент написания этой статьи (проверьте ссылку, чтобы подтвердить, что она по-прежнему верна), документация Android рекомендует использовать,
AppCompatActivity
если вы используете панель приложений.Это рациональная данность:
Основные инструкции по добавлению панели инструментов:
AppCompatActivity
NoActionBar
.ToolBar
к макету xml каждого действия.ToolBar
в каждой деятельностиonCreate
.Смотрите инструкции по документации для более подробной информации. Они довольно понятны и полезны.
источник
Для минимального уровня API 15, вы бы хотели использовать
AppCompatActivity
. Так, например, вашMainActivity
будет выглядеть так:Чтобы использовать его
AppCompatActivity
, убедитесь, что у вас есть загруженная библиотека поддержки Google (это можно проверить в меню «Инструменты» -> «Android» -> «Менеджер SDK»). Затем просто включите зависимость gradle в файл gradle.build вашего приложения:Вы можете использовать его в
AppCompat
качестве основногоActivity
, который затем можно использовать для запуска фрагментов или других операций (это зависит от того, какое приложение вы создаете).Книга BigNerdRanch - хороший ресурс, но да, он устарел. Прочитайте его для получения общей информации о том, как работает Android, но не ожидайте, что конкретные классы, которые они используют, будут обновлены.
источник
Activity
класс является основным классом. (Оригинал) Поддерживает управление фрагментами (начиная с API 11). Больше не рекомендуется его чистое использование, потому что его специализации намного лучше.ActionBarActivity
была в момент замены к классу активности , потому что легко обрабатывать ActionBar в приложении.AppCompatActivity
это новый путь , потому что ActionBar не рекомендуется больше , и вы должны использовать панель инструментов вместо (что в настоящее время замена ActionBar). AppCompatActivity наследует от FragmentActivity, поэтому, если вам нужно обработать фрагменты, вы можете (через Fragment Manager). AppCompatActivity предназначена для ЛЮБОГО API, а не только для 16+ (кто это сказал?). Вы можете использовать его, добавив в свой файл Gradle. Я использую его в API 10, и он отлично работает.compile 'com.android.support:appcompat-v7:24:2.0'
источник
Toolbar
.Здесь много путаницы, особенно если вы читаете устаревшие источники.
Основным является то
Activity
, что может показать фрагменты. Вы можете использовать эту комбинацию, если у вас версия Android> 4.Тем не менее, есть также библиотека поддержки , которая включает в себя другие классы , которые вы упомянули:
FragmentActivity
,ActionBarActivity
иAppCompat
. Первоначально они использовались для поддержки фрагментов в версиях Android <4, но на самом деле они также использовались для поддержки функциональности из более новых версий Android (например, дизайн материала).Самый последний
AppCompat
, остальные 2 старше. Стратегия, которую я использую, состоит в том, чтобы использовать всегдаAppCompat
, чтобы приложение было готово в случае бэкпортов из будущих версий Android.источник
Если вы говорите
Activity
,AppcompactActivity
иActionBarActivity
т.д и т.д ..Нам нужно поговорить о базовых классах, которые они расширяют. Сначала мы должны понять иерархию суперклассов.
Все вещи запускаются из контекста, который является суперклассом для всех этих классов.
Context
сопровождается или продленContextWrapper
Теперь мы достигаем
Activity
Ниже классы ограничены в расширении, но они расширяются внутренним наследником и обеспечивают поддержку определенных API
сейчас FragmentActivty
При использовании этого класса , в отличие от новой платформы встроенного фрагмента и загрузчиком поддержки, вы должны использовать
getSupportFragmentManager()
иgetSupportLoaderManager()
методы соответственно для доступа к этим функциям.В 2015 году ActionBarActivity устарела в редакции 22.1.0 библиотеки поддержки. Вместо этого следует использовать AppCompatActivity .
Вы можете добавить ActionBar к своей деятельности при работе на уровне API 7 или выше, расширив этот класс для своей деятельности и установив тему деятельности на
Theme.AppCompat
аналогичную тему.Я имею в виду эти два один , два
источник
Поскольку имя, вероятно, изменится в будущих версиях Android (в настоящее время последняя версия есть,
AppCompatActivity
но в какой-то момент оно, вероятно, изменится), я считаю, что хорошо иметь класс,Activity
который расширяется,AppCompatActivity
а затем все ваши действия расширяются от этой. Если завтра они меняют имя,AppCompatActivity2
например, вам придется изменить его только в одном месте.источник
AppCompatActivity расширяет FragmentActivity расширяет BaseFragmentActivityApi16 расширяет BaseFragmentActivityApi14 расширяет SupportActivity расширяет Activity
Так что активность быстрее, чем все, и AppCompatActivity лучше всех.
источник