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.




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'

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


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.


1
isso parece um complemento para mais alguém?
Noah Herron
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.