Je viens d'iOS où c'est facile et vous utilisez simplement un UIViewController. Cependant, dans Android, les choses semblent beaucoup plus compliquées, avec certains composants UIC pour des niveaux d'API spécifiques. Je lis BigNerdRanch pour Android (le livre a environ 2 ans) et ils suggèrent que j'utilise Activity
pour héberger mon FragmentActivities
. Cependant, je pensais que Activity
c'était obsolète.
Donc, pour l'API de niveau 22 (avec un support minimum pour l'API de niveau 15 ou 16), que dois-je exactement utiliser à la fois pour héberger les composants et pour les composants eux-mêmes? Y a-t-il des utilisations pour tous ces éléments ou devrais-je en utiliser un ou deux presque exclusivement?
android
android-fragments
android-activity
android-actionbaractivity
appcompatactivity
Jameson
la source
la source
FragmentActivity
ies. Vous hébergez uniquementFragment
s. Sur les nouvelles versions d'Android, laActivity
classe elle-même a été mise à jour pour les héberger directement. Pour prendre en charge les anciennes versions aFragmentActivity
été introduit.Activity
en charge d'unActionBar
. Cela a été pris en charge sur les anciennes versions jusqu'à laActionBarActivity
première, qui est maintenant obsolète et remplacé parAppCompatActivity
. Depuis, ces deux classes s'étendent,FragmentActivity
elles prennent également en charge l'hébergement deFragment
s.Réponses:
Non.
Activity
est la référence. Chaque activité hériteActivity
, directement ou indirectement.FragmentActivity
est à utiliser avec le backport de fragments trouvés dans les bibliothèquessupport-v4
etsupport-v13
. L'implémentation native des fragments a été ajoutée dans l'API niveau 11, ce qui est inférieur auxminSdkVersion
valeurs proposées . La seule raison pour laquelle vous devriez considérerFragmentActivity
spécifiquement est que vous souhaitez utiliser des fragments imbriqués (un fragment contenant un autre fragment), car cela n'était pas pris en charge dans les fragments natifs jusqu'au niveau 17 de l'API.AppCompatActivity
est duappcompat-v7
bibliothèque. Principalement, cela offre un backport de la barre d'action. Étant donné que la barre d'action native a été ajoutée dans l'API niveau 11, vous n'avez pas besoinAppCompatActivity
de cela. Cependant, les versions actuellesappcompat-v7
ajoutent également un backport limité de l'esthétique Material Design, en termes de barre d'action et de divers widgets. Il y a des avantages et des inconvénients à utiliserappcompat-v7
, bien au-delà de la portée de cette réponse spécifique Stack Overflow.ActionBarActivity
est l'ancien nom de l'activité de base deappcompat-v7
. Pour diverses raisons, ils ont voulu changer le nom. À moins d' une bibliothèque tierce vous utilisez insiste sur uneActionBarActivity
, vous devriez préférerAppCompatActivity
plusActionBarActivity
.Donc, étant donné votre
minSdkVersion
dans la gamme 15-16:Si vous voulez le look Material Design rétroporté, utilisez
AppCompatActivity
Sinon, mais vous voulez des fragments imbriqués, utilisez
FragmentActivity
Sinon, utilisez
Activity
Il suffit d'ajouter à partir du commentaire comme note:
AppCompatActivity
étendFragmentActivity
, donc toute personne qui a besoin d'utiliser les fonctionnalités deFragmentActivity
peut utiliserAppCompatActivity
.la source
FragmentActivity
est un ancêtre deAppCompatActivity
. Bien que je ne recommande pas d'utiliser des fragments imbriqués, dans la mesure où les fragments imbriqués fonctionnent, ilsAppCompatActivity
prendront en charge les fragments imbriqués.Activity
plupart des dernières versions sans lasupport-v7
conception de matériaux non rétroportée. Mon objectif est min 19, objectif 25Theme.Material
, vous avez besoinminSdkVersion
de 21 ou plus.Activity
est la classe de base de toutes les autres activités, je ne pense pas qu'elle sera dépréciée. La relation entre eux est:Activity
<-FragmentActivity
<-AppCompatActivity
<-ActionBarActivity
'<-' signifie héritage ici. La référence mentionnée
ActionBarActivity
est obsolète, utilisezAppCompatActivity
plutôt.Donc, en gros, utiliser
AppCompatActivity
est toujours le bon choix. Les différences entre eux sont:Activity
est la base.Activity
,FragmentActivity
offre la possibilité d'utiliserFragment
.FragmentActivity
,AppCompatActivity
fournit des fonctionnalitésActionBar
.la source
2019: Utilisation
AppCompatActivity
Au moment d'écrire ces lignes (vérifiez le lien pour confirmer qu'il est toujours vrai), la documentation Android recommande d'utiliser
AppCompatActivity
si vous utilisez une barre d'applications.C'est le rationnel donné:
Les instructions générales pour ajouter une barre d'outils sont
AppCompatActivity
NoActionBar
.ToolBar
à la disposition xml de chaque activité.ToolBar
dans chaque activitéonCreate
.Voir les instructions de documentation pour plus de détails. Ils sont assez clairs et utiles.
la source
Pour un niveau d'API minimum de 15, vous souhaitez utiliser
AppCompatActivity
. Ainsi, par exemple, votreMainActivity
ressemblerait à ceci:Pour utiliser le
AppCompatActivity
, assurez-vous que la bibliothèque d'assistance Google est téléchargée (vous pouvez le vérifier dans vos Outils -> Android -> Gestionnaire de SDK). Ensuite, incluez simplement la dépendance gradle dans le fichier gradle.build de votre application:Vous pouvez l'utiliser
AppCompat
comme votre principalActivity
, qui peut ensuite être utilisé pour lancer des fragments ou d'autres activités (cela dépend du type d'application que vous créez).Le livre BigNerdRanch est une bonne ressource, mais oui, il est dépassé. Lisez-le pour des informations générales sur le fonctionnement d'Android, mais ne vous attendez pas à ce que les classes spécifiques qu'ils utilisent soient à jour.
la source
Activity
classe est la classe de base. (L'original) Il prend en charge la gestion des fragments (depuis l'API 11). N'est plus recommandé son utilisation pure car ses spécialisations sont bien meilleures.ActionBarActivity
était en un instant le remplacement de la classe Activity car il facilitait la gestion de l'ActionBar dans une application.AppCompatActivity
est la nouvelle façon de procéder, car l'ActionBar n'est plus encouragée et vous devez utiliser la barre d'outils à la place (c'est actuellement le remplacement de l' ActionBar). AppCompatActivity hérite de FragmentActivity, donc si vous avez besoin de gérer des fragments, vous pouvez (via le Fragment Manager). AppCompatActivity est pour N'IMPORTE QUELLE API, pas seulement 16+ (qui a dit cela?). Vous pouvez l'utiliser en ajoutantcompile 'com.android.support:appcompat-v7:24:2.0'
dans votre fichier Gradle. Je l'utilise dans API 10 et cela fonctionne parfaitement.la source
Toolbar
.Il y a beaucoup de confusion ici, surtout si vous lisez des sources obsolètes.
Le plus simple est celui
Activity
qui peut afficher des fragments. Vous pouvez utiliser cette combinaison si vous êtes sur la version Android> 4.Cependant, il y a aussi une bibliothèque de soutien qui englobe les autres classes que vous avez mentionnés:
FragmentActivity
,ActionBarActivity
etAppCompat
. À l'origine, ils étaient utilisés pour prendre en charge des fragments sur les versions Android <4, mais en fait, ils sont également utilisés pour rétroporter les fonctionnalités des versions plus récentes d'Android (conception de matériaux par exemple).Le dernier est
AppCompat
, les 2 autres sont plus anciens. La stratégie que j'utilise est de toujours utiliserAppCompat
, afin que l'application soit prête en cas de rétroportages des futures versions d'Android.la source
Si vous parlez
Activity
,AppcompactActivity
,ActionBarActivity
etc etc ..Nous devons parler des classes de base qu'elles étendent, nous devons d'abord comprendre la hiérarchie des super classes.
Tout est démarré à partir de Context qui est super classe pour toutes ces classes.
Context
est suivi ou prolongé parContextWrapper
Maintenant, nous atteignons
Activity
Les classes ci-dessous sont limitées à étendre mais elles sont étendues par leur descendeur en interne et fournissent un support pour Api spécifique
maintenant FragmentActivty
Lorsque vous utilisez cette classe par opposition à la prise en charge des fragments et des chargeurs intégrés de la nouvelle plate-forme, vous devez utiliser les méthodes
getSupportFragmentManager()
etgetSupportLoaderManager()
respectivement pour accéder à ces fonctionnalités.En 2015, ActionBarActivity est obsolète dans la révision 22.1.0 de la bibliothèque de support. AppCompatActivity doit être utilisé à la place.
Vous pouvez ajouter un ActionBar à votre activité lorsque vous exécutez sur l'API niveau 7 ou supérieur en étendant cette classe pour votre activité et en définissant le thème de l'activité sur
Theme.AppCompat
ou un thème similaireJe réfère ces deux un , deux
la source
Étant donné que le nom est susceptible de changer dans les futures versions d'Android (actuellement la dernière est
AppCompatActivity
mais elle changera probablement à un moment donné), je crois qu'une bonne chose à avoir est une classeActivity
qui s'étendAppCompatActivity
et ensuite toutes vos activités s'étendent à partir de celle-ci. Si demain, ils changent le nomAppCompatActivity2
par exemple, vous devrez le changer juste au même endroit.la source
AppCompatActivity étend FragmentActivity étend BaseFragmentActivityApi16 étend BaseFragmentActivityApi14 étend SupportActivity étend l' activité
Ainsi, l' activité est plus rapide que tous et AppCompatActivity est le meilleur de tous.
la source