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.




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'

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


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.


1
czy to wydaje się być dodatkiem dla kogoś innego?
Noah Herron
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.