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.

Degreat Yartey
la source
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'
Endran
la source
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
67

Voici la réponse de l' article du blog des développeurs Android :

"ActionBarActivity est devenu obsolète au profit de la nouvelle AppCompatActivity. "

Vous pouvez en savoir plus là-dessus.

nvinayshetty
la source
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.

Wentao Ma
la source
1
cela semble-t-il être un ajout à quelqu'un d'autre?
Noah Herron