Por que o ActionBarActivity foi descontinuado

121

Instalei o Android Studio recentemente e comecei a codificar uma atividade para estender ActionBarActivitye ela mostrou que estava obsoleta. Então, de que outra forma eu configuro uma barra de ação para minha atividade. Além disso, o Treinamento de Introdução usa a ActionBarActivityreferência sem referência que foi preterida.

Degreat Yartey
fonte
16
A partir do appcompat-v7-r21.1.0, a lógica mudou um pouco e ainda por cima ActionBarActivityagora AppCompatActivity. Não há diferença entre esses dois do seu ponto de vista.
Eugen Pechanec
1
O ActionBarActivity é removido desde a biblioteca de suporte 26.0.0-beta2 developer.android.com/sdk/support_api_diff/26.0.0-beta2/changes/…
ישו אוהב אותך

Respostas:

120

O ActionBar está obsoleto desde que Toolbarfoi introduzido.Toolbarpode ser visto como um 'superconjunto' de qualquer barra de ação. Portanto, o 'velho' ActionBaragora é um exemplo de a Toolbar. Se você deseja funcionalidade semelhante, mas sem avisos de descontinuação, faça o seguinte:

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

Você precisa definir o Toolbar xml no seu layout:

<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>

Com essa nova funcionalidade, você pode criar seu próprio costume ActionBare deixar o Android fazer o trabalho pesado. Basta criar sua própria exibição personalizada que se estende a partir de Toolbar.


Além disso, você deve usar, em AppCompatActivityvez de ActionBarActivity, ele foi introduzido na versão mais recente da biblioteca appcompat. Então não se esqueça de atualizar gradle

compile 'com.android.support:appcompat-v7:22.1.1'
Endran
fonte
9
É tão simples como trocar extends ActionBarActivitycom extends AppCompatActivity?
Ehtesh Choudhury
9
Internamente, existem algumas mudanças, mas a interface é idêntica. Então, sim, é tão fácil quanto apenas substituir o tipo de atividade.
Endran
61
é uma pena que o assistente do Android Studio ainda estenda o ActionBarActivity e avise que está obsoleto. Eles se comunicam internamente @Google?
Garoto
Não é a solução perfeita. Sua resposta dada para o ActionBar não para o ActionBarActivity. Eu vou com @DroidMind Solution
Shabbir Dhangot
Ótimo, mais trabalho de novo. Igual ao design para incentivar todos a usar Fragmentos. Os princípios de design do Google são ótimos para empresas que têm 10 pessoas trabalhando no mesmo aplicativo.
Muz
67

Aqui está a resposta da postagem no blog de desenvolvedores do Android :

"O ActionBarActivity foi descontinuado em favor do novo AppCompatActivity. "

Você pode ler mais sobre isso lá.

nvinayshetty
fonte
6

Esta resposta fornece uma maneira simples de eliminar a mensagem de erro. Você pode ver como um complemento para os outros.

Quando alteramos a classe Activity principal: ActionBarActivitya AppCompatActivitymensagem de erro desaparecerá.

Você pode clicar aqui para mais informações.

Wentao Ma
fonte
1
isso parece um complemento para mais alguém?
Noah Herron