Dlaczego ActionBarActivity zostało wycofane

121

Świeżo zainstalowałem Android Studio i zacząłem kodować działanie do rozszerzenia ActionBarActivityi okazało się, że jest ono przestarzałe. Jak inaczej ustawić pasek akcji dla mojej aktywności. Również szkolenie Getting Started używa ActionBarActivitybez wzmianki o tym, że zostało ono wycofane.

Degreat Yartey
źródło
16
Od appcompat-v7-r21.1.0 logika nieco się zmieniła i do tego ActionBarActivityjest teraz AppCompatActivity. Z twojego punktu widzenia nie ma różnicy między tymi dwoma.
Eugen Pechanec
1
ActionBarActivity została usunięta, ponieważ biblioteka wsparcia 26.0.0-beta2 developer.android.com/sdk/support_api_diff/26.0.0-beta2/changes/…
ישו אוהב אותך

Odpowiedzi:

120

ActionBar jest przestarzały od czasu Toolbarjego wprowadzenia. Toolbarmoże być postrzegany jako „nadzbiór” dowolnego paska akcji. Tak więc „stary” ActionBarjest teraz przykładem pliku Toolbar. Jeśli potrzebujesz podobnych funkcji, ale bez ostrzeżeń o wycofaniu, wykonaj następujące czynności:

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

Musisz zdefiniować Toolbarw swoim układzie 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>

Dzięki tej nowej funkcji możesz stworzyć własne niestandardowe ActionBari pozwolić Androidowi wykonać ciężkie zadanie . Po prostu utwórz własny widok niestandardowy, który rozciąga się od Toolbar.


Ponadto powinieneś używać AppCompatActivityzamiast ActionBarActivity, został on wprowadzony w najnowszej wersji biblioteki appcompat. Więc nie zapomnij zaktualizować gradle

compile 'com.android.support:appcompat-v7:22.1.1'
Endran
źródło
9
Jest to tak proste, jak wymieniając extends ActionBarActivityz extends AppCompatActivity?
Ehtesh Choudhury
9
Wewnętrznie jest sporo zmian, ale interfejs jest identyczny. Więc tak, jest to tak proste, jak zwykła zmiana rodzaju aktywności.
Endran
61
jest do bani, że kreator Android Studio nadal rozszerza ActionBarActivity, a następnie informuje, że jest przestarzały. Czy w ogóle komunikują się wewnętrznie @Google?
Chłopiec
Nie jest to idealne rozwiązanie. Twoja podana odpowiedź dla ActionBar, a nie dla ActionBarActivity. Pójdę z @DroidMind Solution
Shabbir Dhangot
Świetnie, znowu więcej pracy. Taki sam jak ich projekt, aby zachęcić wszystkich do korzystania z Fragmentów. Zasady projektowania Google są świetne dla firm, które mają 10 osób pracujących nad tą samą aplikacją.
Muz
67

Oto odpowiedź z posta na blogu programistów Androida :

„ActionBarActivity zostało wycofane i zastąpione nowym AppCompatActivity ”.

Więcej na ten temat przeczytasz tam.

nvinayshetty
źródło
7

Ta odpowiedź daje prosty sposób na wyeliminowanie komunikatu o błędzie. Możesz zobaczyć jako dodatek do innych.

Kiedy zmieniamy klasę Activity parent: ActionBarActivityaby AppCompatActivitykomunikat o błędzie zniknie.

Możesz kliknąć tutaj, aby uzyskać więcej informacji.

Wentao Ma
źródło
1
czy to wydaje się być dodatkiem dla kogoś innego?
Noah Herron