Почему ActionBarActivity устарел


121

Я только что установил Android Studio и начал кодировать расширяемую активность, ActionBarActivityи оказалось, что она устарела. Итак, как еще мне настроить панель действий для моей деятельности. Также в курсе «Приступая к работе» используется метод ActionBarActivityбез упоминания того, что он устарел.




16
Начиная с appcompat-v7-r21.1.0, логика несколько изменилась, и в довершение всего ActionBarActivity- теперь AppCompatActivity. С вашей точки зрения, между этими двумя нет разницы.
Eugen Pechanec

1
ActionBarActivity удален, так как библиотека поддержки 26.0.0-beta2 developer.android.com/sdk/support_api_diff/26.0.0-beta2/changes/…
ישו אוהב אותך

Ответы:


120

ActionBar устарел с тех пор, как Toolbarбыл представлен. Toolbarможно рассматривать как «надмножество» любой панели действий. Таким образом, «старый» ActionBarтеперь является примером Toolbar. Если вам нужна аналогичная функциональность, но без предупреждений об устаревании, сделайте следующее:

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

Вам необходимо определить Toolbarв вашем макете 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>

С помощью этой новой функции вы можете создавать свои собственные настройки ActionBarи позволить Android делать тяжелую работу. Просто создайте свой собственный вид, расширяющийся от Toolbar.


Кроме того, вы должны использовать AppCompatActivityвместо ActionBarActivity, это было введено в последней версии библиотеки appcompat. Так что не забудьте обновить gradle

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

9
Является ли это так просто , как замена из extends ActionBarActivityс extends AppCompatActivity?
Эхтеш Чоудхури

9
Внутри есть некоторые изменения, но интерфейс идентичен. Так что да, это так же просто, как просто сменить вид деятельности.
Эндран

61
отстой, что мастер Android Studio по-прежнему расширяет ActionBarActivity, а затем сообщает, что он устарел. Они вообще общаются внутри @Google?
Мальчик

Не идеальное решение. Ваш ответ для ActionBar, а не для ActionBarActivity. Я пойду с @DroidMind Solution
Шабир Дангот

Отлично, снова работа. То же, что и их дизайн, чтобы побудить всех использовать фрагменты. Принципы дизайна Google отлично подходят для компаний, в которых над одним приложением работает 10 человек.
Muz


7

Этот ответ дает простой способ устранить сообщение об ошибке. Вы можете смотреть как добавление к другим.

Когда мы меняем родительский класс Activity: ActionBarActivityсообщение AppCompatActivityоб ошибке исчезнет.

Вы можете щелкнуть здесь для получения дополнительной информации.


1
это похоже на добавление кому-то еще?
Ной Херрон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.