android developer cast - Activity, AppCompatActivity, FragmentActivity et ActionBarActivity: quand utiliser quoi?




4 Answers

Je pensais que l'activité était dépréciée

Non.

Donc, pour le niveau 22 de l'API (avec un minimum de prise en charge de l'API niveau 15 ou 16), que dois-je utiliser à la fois pour héberger les composants et pour les composants eux-mêmes? Y a-t-il des utilisations pour tout cela, ou devrais-je en utiliser un ou deux presque exclusivement?

Activity est la base. Chaque activité hérite de l' Activity , directement ou indirectement.

FragmentActivity est à utiliser avec le backport de fragments trouvés dans les bibliothèques support-v4 et support-v13 . L'implémentation native des fragments a été ajoutée au niveau API 11, qui est inférieur aux valeurs minSdkVersion proposées. La seule raison pour laquelle vous devriez considérer spécifiquement FragmentActivity est si vous voulez utiliser des fragments imbriqués (un fragment contenant un autre fragment), car cela n'était pas supporté dans les fragments natifs jusqu'au niveau 17 de l'API.

AppCompatActivity provient de la bibliothèque appcompat-v7 . Principalement, cela offre un backport de la barre d'action. Étant donné que la barre d'actions native a été ajoutée au niveau API 11, vous n'avez pas besoin de AppCompatActivity pour cela. Cependant, les versions actuelles d' appcompat-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 à utiliser appcompat-v7 , bien au-delà de la portée de cette réponse Stack Overflow spécifique.

ActionBarActivity est l'ancien nom de l'activité de base d' appcompat-v7 . Pour diverses raisons, ils voulaient changer le nom. À moins qu'une bibliothèque tierce que vous utilisez insiste sur ActionBarActivity , vous devriez préférer AppCompatActivity à ActionBarActivity .

Donc, étant donné votre minSdkVersion dans la gamme 15-16:

  • Si vous voulez que l'aspect Material Design soit rétroporté, utilisez AppCompatActivity

  • Si ce n'est pas le cas, mais que vous voulez des fragments imbriqués, utilisez FragmentActivity

  • Sinon, utilisez Activity

Ajouter simplement à partir d'un commentaire une remarque: AppCompatActivity étend FragmentActivity, de sorte que toute personne ayant besoin d'utiliser les fonctionnalités de FragmentActivity peut utiliser AppCompatActivity.

to setsupportactionbar

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 UIComponents 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 mes FragmentActivities . Cependant, je pensais que l' Activity était obsolète.

Donc, pour le niveau 22 de l'API (avec un minimum de prise en charge de l'API niveau 15 ou 16), que dois-je utiliser à la fois pour héberger les composants et pour les composants eux-mêmes? Y a-t-il des utilisations pour tout cela, ou devrais-je en utiliser un ou deux presque exclusivement?




Pour un niveau d'API minimum de 15, vous devez utiliser AppCompatActivity . Par exemple, votre MainActivity ressemblerait à ceci:

public class MainActivity extends AppCompatActivity {
    ....
    ....
}

Pour utiliser AppCompatActivity , assurez-vous d'avoir téléchargé la bibliothèque d'assistance Google (vous pouvez vérifier cela dans votre Outils -> Android -> Gestionnaire SDK). Ensuite, il suffit d'inclure la dépendance de gradle dans le fichier gradle.build de votre application:

compile 'com.android.support:appcompat-v7:22:2.0'

Vous pouvez utiliser ce AppCompat comme Activity principale, qui peut ensuite être utilisée pour lancer des fragments ou d'autres activités (cela dépend du type d'application que vous construisez).

Le livre BigNerdRanch est une bonne ressource, mais oui, c'est obsolète. Lisez-le pour obtenir 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.




Activity classe d' Activity est la classe de base. (L'original) Il supporte la gestion des fragments (depuis API 11). N'est plus recommandé son usage pur car ses spécialisations sont bien meilleures.

ActionBarActivity était dans un moment le remplacement de la classe Activity car il était facile de gérer le ActionBar dans une application.

AppCompatActivity est la nouvelle façon de procéder, car ActionBar n'est plus encouragé et vous devriez utiliser la barre d'outils à la place (c'est actuellement le remplacement ActionBar). AppCompatActivity hérite de FragmentActivity, donc si vous avez besoin de gérer les fragments, vous pouvez le faire (via le gestionnaire de fragments). AppCompatActivity est pour toute API, non seulement 16+ (qui a dit cela?). Vous pouvez l'utiliser en ajoutant compile 'com.android.support:appcompat-v7:24:2.0' dans votre fichier Gradle. Je l'utilise en API 10 et cela fonctionne parfaitement.




Puisque le nom est susceptible de changer dans les futures versions d'Android (actuellement la dernière version est AppCompatActivity mais elle changera probablement à un moment donné), je crois qu'une bonne chose à avoir est une classe qui étend AppCompatActivity et toutes vos activités s'étendent de cette un. Si demain, ils changent le nom à AppCompatActivity2 par exemple, vous devrez le changer juste au même endroit.




Related