Différence entre l'activité et l'activité fragmentaire

228

Je travaillais sur des fragments et suis tombé sur deux choses Activityet FragmentActivityqui sont utilisées plusieurs fois. Je veux savoir s'il y a une différence entre ces deux, car lorsque j'ai changé Activityavec FragmentActivity, cela n'a eu aucun effet sur l'application.

Débutant
la source

Réponses:

316

A FragmentActivityest une sous-classe Activityqui a été créée pour le package de support Android .

La FragmentActivityclasse ajoute quelques nouvelles méthodes pour assurer la compatibilité avec les anciennes versions d'Android, mais à part cela, il n'y a vraiment pas beaucoup de différence entre les deux. Assurez-vous simplement de modifier tous les appels vers getLoaderManager()et getFragmentManager()vers getSupportLoaderManager()et getSupportFragmentManager()respectivement.

Alex Lockwood
la source
4
Hé, je n'ai pas modifié les appels à getSupportLoaderManager () et getSupportFragmentManager () .. mais cela fonctionne toujours bien.
Rookie
31
C'est ce qui le rend si dangereux: P. FragmentActivityhérite des méthodes getLoaderManageret getFragmentManagerde Activityet par conséquent le compilateur ne se plaindra pas. Les chances sont que vous importez les incorrectes LoaderManageret les FragmentManagerclasses aussi. Assurez-vous que vous importez ces classes à partir du package de support ( android.support.v4.app), pas du SDK Android ( android.app).
Alex Lockwood
1
Pouvons-nous dire que si nous voulons utiliser des fragments pour la version Android 2.x, nous devons utiliser FragmentActivity nad pour la version qui prend en charge les fragments dont nous avons besoin pour utiliser Activity.
Rookie
55
Je pense que ce que vous dites est correct. Mais pour être clair à 100% ... utilisez Activitysi vous utilisez android.app.Fragment; utiliser FragmentActivitysi vous utilisez android.support.v4.app.Fragment. Ne jamais attacher un android.support.v4.app.Fragmentà un android.app.Activity, car cela entraînerait la levée d'une exception.
Alex Lockwood
13
Essayez d'abord ce didacticiel (comment l'utiliser Fragmentsdans une application). Ensuite, passez à ce didacticiel (comment utiliser les Fragments du package de support). La documentation sur le site des développeurs mérite également d'être lue.
Alex Lockwood
4

FragmentActivityfait partie de la bibliothèque de support , tandis que Activityc'est la classe par défaut du framework. Ils sont fonctionnellement équivalents.

Vous devez toujours utiliser FragmentActivityet android.support.v4.app.Fragmentau lieu de la plate-forme par défaut Activityet des android.app.Fragmentclasses. L'utilisation des valeurs par défaut de la plate-forme signifie que vous comptez sur l'implémentation des fragments utilisée dans l'appareil sur lequel vous exécutez. Celles-ci ont souvent plusieurs années et contiennent des bogues qui ont depuis été corrigés dans la bibliothèque de support.

Samuel Peter
la source
1
Remarque: la minSdkVersionbibliothèque de support est 14 depuis la version 26.xx
Eugen Pechanec