Pourquoi ActionBarActivity est-il obsolète?


121

J'ai récemment installé Android Studio et j'ai commencé à coder une activité à étendre ActionBarActivityet cela a montré qu'elle était obsolète. Alors, comment puis-je configurer une barre d'action pour mon activité. De plus, la formation de mise en route utilise le ActionBarActivitysans faire référence qu'il est obsolète.




16
Depuis appcompat-v7-r21.1.0, la logique a quelque peu changé et en plus, c'est ActionBarActivitymaintenant AppCompatActivity. Il n'y a aucune différence entre ces deux de votre point de vue.
Eugen Pechanec

1
ActionBarActivity est supprimé depuis la bibliothèque de support 26.0.0-beta2 developer.android.com/sdk/support_api_diff/26.0.0-beta2/changes/…
ישו אוהב אותך

Réponses:


120

ActionBar est obsolète depuis Toolbarson introduction. Toolbarpeut être considéré comme un «sur-ensemble» de toute barre d'action. Ainsi, le «vieux» ActionBarest maintenant un exemple de Toolbar. Si vous souhaitez des fonctionnalités similaires, mais sans avertissements d'obsolescence, procédez comme suit:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
    toolbar.setTitle(R.string.app_name);
    setSupportActionBar(toolbar);
}

Vous devez définir le Toolbardans votre mise en page xml:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>

Avec cette nouvelle fonctionnalité, vous pouvez créer votre propre personnalisation ActionBaret laisser Android faire le gros du travail. Créez simplement votre propre vue personnalisée qui s'étend de Toolbar.


En outre, vous devez utiliser à la AppCompatActivityplace de ActionBarActivity, il a été introduit dans la dernière version de la bibliothèque appcompat. Alors n'oubliez pas de mettre à jour gradle

compile 'com.android.support:appcompat-v7:22.1.1'

9
Est-ce aussi simple que d'échanger extends ActionBarActivityavec extends AppCompatActivity?
Ehtesh Choudhury

9
En interne, il y a pas mal de changements, mais l'interface est identique. Alors oui, c'est aussi simple que de simplement remplacer le type d'activité.
Endran

61
craint que l'assistant Android Studio étende toujours ActionBarActivity, puis vous indique qu'il est obsolète. Communiquent-ils même en interne @Google?
Garçon

Pas la solution parfaite. Votre réponse donnée pour ActionBar pas pour ActionBarActivity. J'irai avec @DroidMind Solution
Shabbir Dhangot

Excellent, encore du travail. Identique à leur conception pour encourager tout le monde à utiliser des fragments. Les principes de conception de Google sont parfaits pour les entreprises qui comptent 10 personnes travaillant sur la même application.
Muz


7

Cette réponse donne un moyen simple d'éliminer le message d'erreur. Vous pouvez voir comme un ajout aux autres.

Lorsque nous changeons la société mère classe d'activité: ActionBarActivityau AppCompatActivitymessage d'erreur disparaît.

Vous pouvez cliquer ici pour plus d'informations.


1
cela semble-t-il être un ajout à quelqu'un d'autre?
Noah Herron
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.