¿Por qué ActionBarActivity quedó obsoleto?

121

Instalé Android Studio recientemente y comencé a codificar una actividad para extender ActionBarActivityy mostró que estaba obsoleto. Entonces, ¿de qué otra manera configuro una barra de acciones para mi actividad? Además, el Getting Started Training utiliza el ActionBarActivitysin hacer referencia a que ha quedado obsoleto.

Degreat Yartey
fuente
16
A partir de appcompat-v7-r21.1.0, la lógica cambió un poco y, además, ActionBarActivityahora AppCompatActivity. No hay diferencia entre estos dos desde tu punto de vista.
Eugen Pechanec
1
ActionBarActivity se elimina desde la biblioteca de soporte 26.0.0-beta2 developer.android.com/sdk/support_api_diff/26.0.0-beta2/changes/…
ישו אוהב אותך

Respuestas:

120

ActionBar está en desuso desde que Toolbarse introdujo. Toolbarpuede verse como un "superconjunto" de cualquier barra de acción. Entonces, el 'viejo' ActionBares ahora un ejemplo de a Toolbar. Si desea una funcionalidad similar, pero sin advertencias de obsolescencia, haga lo siguiente:

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

Necesita definir Toolbaren su diseño 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 esta nueva funcionalidad, puede crear su propia personalización ActionBary dejar que Android haga el trabajo pesado. Simplemente cree su propia vista personalizada que se extienda desde Toolbar.


Además, debe usar en AppCompatActivitylugar de ActionBarActivity, se introdujo en la última versión de la biblioteca appcompat. Así que no te olvides de actualizar gradle

compile 'com.android.support:appcompat-v7:22.1.1'
Endran
fuente
9
¿Es tan simple como cambiar extends ActionBarActivitycon extends AppCompatActivity?
Ehtesh Choudhury
9
Internamente hay bastantes cambios, pero la interfaz es idéntica. Así que sí, es tan fácil como simplemente reemplazar el tipo de actividad.
Endran
61
apesta que el asistente de Android Studio aún extiende ActionBarActivity y luego te dice que está en desuso. ¿Incluso se comunican internamente @Google?
Chico
No es la solución perfecta. Su respuesta dada para ActionBar no para ActionBarActivity. Iré con @DroidMind Solution
Shabbir Dhangot
Genial, más trabajo de nuevo. Igual que su diseño para animar a todos a usar Fragmentos. Los principios de diseño de Google son excelentes para empresas que tienen 10 personas trabajando en la misma aplicación.
Muz
7

Esta respuesta ofrece una forma sencilla de eliminar el mensaje de error. Puede ver como un complemento a otros.

Cuando cambiamos la clase Actividad de los padres: al mensaje de error desaparecerá.ActionBarActivityAppCompatActivity

Puede hacer clic aquí para obtener más información.

Wentao Ma
fuente
1
¿Esto parece un complemento para alguien más?
Noah Herron