web-dev-qa-db-fra.com

Quelle est l'amélioration de AppCompatActivity par rapport à ActionBarActivity?

Android.support.v7.app.AppCompatActivity a été ajouté hier à la dernière bibliothèque de support technique v7.

Il est dit que ActionBarActivity a été déconseillé au profit de la nouvelle AppCompatActivity et que AppCompatActivity est la classe de base des activités qui utilisent les fonctions de la barre d'actions de la bibliothèque de support. Alors, quelles sont les nouvelles fonctionnalités de AppCompatActivity sur ActionBarActivity? Quelles améliorations ont AppCompatActivity sur ActionBarActivity? Et quels sont les avantages de AppCompatActivity? Quelqu'un pourrait-il fournir quelques échantillons?

Tous les conseils sont appréciés. Et merci d'avance.

PS: ce qui m'a le plus surpris, c'est que AppCompatActivity qui est étendu de Android.support.v4.app.FragmentActivity est la classe parente directe de ActionBarActivity! Je veux dire en fait maintenant que ActionBarActivity peut faire tout ce que AppCompatActivity peut faire, pourquoi Android a-t-il fait sortir ce dernier?

En même temps, j'ai lu un article de blog qui disait: "Ce n'est pas un changement de nom de ActionBarActivity en AppCompatActivity, la logique interne de AppCompat est disponible via AppCompatDelegate. ", alors quel est le" logique interne "de AppCompat? Que peut faire AppCompatDelegate? Quelqu'un pourrait-il poster des codes à ce sujet?

163
SilentKnight

Comme Chris l'a écrit, la nouvelle version obsolète de ActionBarActivity (celle qui étend la classe AppCompatActivity) est une classe sûre de compatibilité avec les versions antérieures. Son obsolète est juste un indice pour vous demandant d’utiliser plutôt le nouveau AppCompatActivity. AppCompatActivity est une nouvelle implémentation plus générique qui utilise AppCompatDelegate class en interne.

Si vous démarrez un nouveau développement, utilisez plutôt immédiatement la nouvelle classe AppCompatActivity. Si vous avez la possibilité de mettre à jour votre application, remplacez également ActionBarActivity (obsolète) _ par la nouvelle activité. Sinon, vous pouvez rester avec une activité obsolète et il n'y aura aucune différence de comportement.

En ce qui concerne AppCompatDelegate, il vous permet d’avoir de nouveaux widgets teintés dans une activité qui n’est ni AppCompatActivity ni ActionBarActivity.

Par exemple, vous héritez d'une activité d'une bibliothèque externe, ce qui, à son tour, pas hérite de AppCompatActivity, mais vous souhaitez que cette activité comporte des widgets de matériaux teintés (vues). Pour ce faire, vous devez créer une instance de AppCompatDelegate dans votre activité, remplacer les méthodes de cette activité comme addContentView(), setContentView() etc. (voir AppCompatDelegate javadoc liste de méthodes), et à l’intérieur de ces méthodes substituées, transfère les appels à l’instance interne AppCompatDelegate. AppCompatDelegate fera le reste et votre activité "à l'ancienne" sera "matérialisée".

144
sergej shafarenka

C'est surtout un changement de nom: ActionBarActivity ne décrit pas vraiment tout ce qu'il fait maintenant. Vous pouvez utiliser ActionBarActivity en toute sécurité si vous le souhaitez. Pensez-y comme à un lien symbolique.

35
Chris Banes

La bibliothèque de support AppCompat a commencé avec des débuts modestes mais importants: une seule barre d’action cohérente pour tous les périphériques API 7 et supérieurs. Dans la révision 21, , il assumait une nouvelle responsabilité : apporter la palette de couleurs des matériaux, la teinte des widgets, la prise en charge de la barre d’outils, etc. à tous les périphériques API 7+. Avec cela, le nom ActionBarActivity ne couvrait pas vraiment toute la portée de ce qu’il faisait réellement .

http://Android-developers.blogspot.it/2015/04/Android-support-library-221.html

12
AndroidGecko

AppCompatActivity a été introduit dans Android-SDK depuis la sortie de bibliothèque de prise en charge Android.

AppCompatActivity est la classe enfant directe de FragmentActivity du support v4 et la classe parent directe de ActionBarActivity.

AppCompatActivity est la classe de base des activités qui utilisent les fonctionnalités barre d'outils de la bibliothèque de support.

Vous pouvez ajouter un ActionBar à votre activité lorsque API de 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 similaire.

Quant à la bibliothèque de support v7 appcompat, elle ajoute la prise en charge du modèle de conception de l'interface utilisateur Action Bar. Cette bibliothèque inclut un support pour conception du matériel implémentations de l'interface utilisateur.

Voici quelques-unes des classes clés incluses dans la bibliothèque v7 appcompat:

  • ActionBar - Fournit une implémentation du modèle d'interface utilisateur de la barre d'action.
  • AppCompatActivity - Ajoute une classe d'activité d'application pouvant être utilisée comme classe de base pour les activités utilisant la mise en œuvre barre d'outils de la bibliothèque de support.
  • AppCompatDialog - Ajoute une classe de dialogue pouvant être utilisée comme classe de base pour les dialogues à thème AppCompat.
  • ShareActionProvider - Ajoute la prise en charge d'une action de partage normalisée (telle que la messagerie électronique ou la publication sur des applications sociales) pouvant être incluse dans une barre d'actions.

Après avoir téléchargé Bibliothèques de support Android, cette bibliothèque se trouve dans le répertoire /extras/Android/support/v7/appcompat/. annuaire.

9
SilentKnight

Auparavant, le seul point d'entrée dans AppCompat était par l'intermédiaire de la classe ActionBarActivity maintenant obsolète. Malheureusement, cela vous a obligé à utiliser une hiérarchie d’activités définie qui rendait impossible l’utilisation de PreferenceActivity.

voir chris banes's support-libraries-v22-1- pour plus d'informations

7
null pointer

La dernière version de la bibliothèque de support Android, 22.1, rend obsolète le ActionBarActivity au profit de AppCompatActivity, qui promet d’apporter un seul ActionBar cohérent pour tous les périphériques à partir de l’API. Niveau 7 et plus

2
Arpit Gandhi