162 votes

Différence entre le Fragment et FragmentActivity

Ma question est en dehors des différences évidentes héritage, quelles sont les principales différences entre `` et `` ? À quels scénarios sont chaque classe mieux adaptée ? J’essaie d’obtenir une compréhension de pourquoi ces deux classes existent...

285voto

Gunnar Karlsson Points 15071

Un Fragment d' Activity, ce qui a:

  • son propre cycle de vie
  • reçoit ses propres événements d'entrée
  • peuvent être ajoutés ou retirés lorsque l' Activity est en cours d'exécution.

Un Fragment doit toujours être incorporé dans une Activity.

Fragments ne font pas partie de l'API avant HoneyComb (3.0). Si vous souhaitez utiliser Fragments dans une application ciblant une version de la plateforme avant en Nid d'abeille, vous devez ajouter le Paquet de Soutien à votre projet et à l'utilisation de l' FragmentActivity pour tenir votre Fragments. L' FragmentActivity classe a une API pour traiter Fragments, alors que l' Activity classe, avant en Nid d'abeille, n'est-ce pas.

Si votre projet est de ciblage en Nid d'abeille ou plus récent, vous devez utiliser Activity et pas FragmentActivity pour tenir votre Fragments.

Quelques détails:

Utiliser android.app.Fragment avec Activity. Utiliser android.support.v4.app.Fragment avec FragmentActivity. Ne pas ajouter le support package Fragment d'un Activity qu'il sera la cause de la levée d'une Exception.

Une chose à être prudent avec: FragmentManager et LoaderManager ont séparé en charge des versions pour FragmentActivity:

Si vous utilisez un Fragment en Activity (Nid d'abeille), appel

  • getFragmentManager() pour obtenir de l' android.app.FragmentManager
  • getLoaderManager() pour obtenir de l' android.app.LoaderManager

si vous utilisez un Fragment en FragmentActivity (pré-Nid d'abeille), composez le:

  • getSupportFragmentManager() pour obtenir de l' android.support.v4.app.FragmentManager.
  • getSupportLoaderManager() pour obtenir de l' android.support.v4.app.LoaderManager

donc, ne pas faire

myFragmentActivity.getLoaderManager()//don't do this, do myFragmentActivity.getSupportLoaderManager()

ou

android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()//don't do this, do android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()

Aussi utile de savoir est que, si un fragment doit être incorporé dans une Activity il n'a pas à faire partie de l' Activity mise en page. Il peut être utilisé comme un travailleur invisible pour l'activité, sans INTERFACE utilisateur de son propre.

14voto

FragmentActivity est notre activité classique avec le support des fragments, rien de plus. Par conséquent, FragmentActivity est nécessaire lorsqu'un fragment est associé à Activity.

Bien Fragment est un bon composant qui copie les comportements de base de l’activité, mais qui n’est pas un composant d’application autonome tel que Activity et qui doit être associé à Activity pour fonctionner.

Regardez ici pour plus de détails

8voto

j2emanue Points 3456

Pensez à FragmentActivity comme une Activité régulière dans la classe qui peut supporter des Fragments. Avant en nid d'abeille, une activité de classe ne pouvait pas supoprt Fragments directement, de sorte que ce qui est nécessaire dans les activités qui utilisent des Fragments.

Si votre distribution cible est en Nid d'abeille et au-delà, vous pouvez étendre l'arrêt de l'Activité à la place.

Aussi un fragment doit être considéré comme un "sous-activité". Il ne peut pas exister sans une activité. Toujours penser à un fragment comme une sous-activité et vous devriez être bon. L'activité serait le parent et le fragment(s) de l'enfant type de relation symbolique.

1voto

Simone Casagranda Points 701

un FragmentActivity est une activité ad hoc contenant un fragment. Dans ces quelques mots, je vous ai expliqué l'un des principaux changements importants que, avec Android 3.0 (HoneyComb), l'équipe Android a inséré dans le SDK Android.

Avec ce nouveau type de concept, vos éléments de code et de mise en page deviennent plus flexibles et maintenables. Si vous effectuez une recherche sur Google, il y a beaucoup d'exemples.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X