Чому було припинено дія ActionBarActivity


121

Я встановив Android Studio щойно, і я почав кодувати діяльність, щоб розширити, ActionBarActivityі це показало, що вона застаріла. То як інакше я налаштувати панель дій для своєї діяльності. Також Початок навчання використовує те, що ActionBarActivityне згадує, що його застаріло.




16
Станом на appcompat-v7-r21.1.0 логіка дещо змінилася, і понад усе ActionBarActivityце зараз AppCompatActivity. Немає різниці між цими двома з вашої точки зору.
Євген Печанець

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

Чудово, знову більше роботи. Те ж, що їх дизайн, щоб заохотити всіх використовувати фрагменти. Принципи дизайну Google чудово підходять для компаній, які мають 10 людей, які працюють над тим самим додатком.
Муз


6

Ця відповідь дає простий спосіб усунути повідомлення про помилку. Ви можете бачити як додаток до інших.

Коли ми змінимо батьківський клас активності: ActionBarActivityповідомлення AppCompatActivityпро помилку зникне.

Ви можете натиснути тут для отримання додаткової інформації.


1
це здається доповненням до когось іншого?
Ной Геррон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.