Perché ActionBarActivity è stato deprecato


121

Ho installato Android Studio di recente e ho iniziato a programmare un'attività da estendere ActionBarActivitye ha mostrato che era deprecata. In quale altro modo posso impostare una barra delle azioni per la mia attività. Anche la formazione introduttiva utilizza il ActionBarActivitysenza fare riferimento al fatto che è stato deprecato.




16
A partire da appcompat-v7-r21.1.0 la logica è leggermente cambiata e per di più ActionBarActivityè ora AppCompatActivity. Non c'è differenza tra questi due dal tuo punto di vista.
Eugen Pechanec

1
ActionBarActivity è stata rimossa dalla libreria di supporto 26.0.0-beta2 developer.android.com/sdk/support_api_diff/26.0.0-beta2/changes/…
ישו אוהב אותך

Risposte:


120

ActionBar è deprecato da quando è Toolbarstato introdotto. Toolbarpuò essere visto come un "superset" di qualsiasi barra delle azioni. Quindi il "vecchio" ActionBarè ora un esempio di a Toolbar. Se desideri funzionalità simili, ma senza avvisi di deprecazione, procedi come segue:

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

Devi definire Toolbarnel tuo layout 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>

Con questa nuova funzionalità puoi creare il tuo personalizzato ActionBare lasciare che Android faccia il lavoro pesante. Basta creare la tua visualizzazione personalizzata che si estende da Toolbar.


Inoltre, dovresti usare AppCompatActivityinvece di ActionBarActivity, è stato introdotto nell'ultima versione della libreria appcompat. Quindi non dimenticare di aggiornare Gradle

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

9
È semplice come sostituirlo extends ActionBarActivitycon extends AppCompatActivity?
Ehtesh Choudhury

9
Internamente ci sono alcuni cambiamenti, ma l'interfaccia è identica. Quindi sì, è facile come sostituire il tipo di attività.
Endran

61
fa schifo che la procedura guidata di Android Studio estenda ancora ActionBarActivity e poi ti dica che è deprecata. Comunicano anche internamente con @Google?
Ragazzo

Non è la soluzione perfetta. La tua risposta data per ActionBar non per ActionBarActivity. Andrò con @DroidMind Solution
Shabbir Dhangot

Fantastico, ancora altro lavoro. Lo stesso del loro design per incoraggiare tutti a utilizzare i frammenti. I principi di progettazione di Google sono ottimi per le aziende che hanno 10 persone che lavorano sulla stessa app.
Muz


7

Questa risposta fornisce un modo semplice per eliminare il messaggio di errore. Puoi vedere come aggiunta a quelli degli altri.

Quando cambiamo la classe di attività genitore: ActionBarActivityper AppCompatActivityil messaggio di errore scompare.

Puoi fare clic qui per maggiori informazioni.


1
questo sembra un'aggiunta a qualcun altro?
Noah Herron
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.