AppCompatActivity'nin ActionBarActivity'ye göre artışı nedir?


164

android.support.v7.app.AppCompatActivity dün en yeni v7 destek kütüphanesine yeni bir özellik olarak eklendi.

Destek kütüphanesi eylem çubuğu özelliklerini kullanan etkinlikler ActionBarActivityiçin yeni lehine AppCompatActivityve AppCompatActivitytemel sınıf olduğu söyleniyor . Yani, yeni özellikler nelerdir AppCompatActivityüzerinde ActionBarActivity? Hangi donanımlar do AppCompatActivityüzerinde var ActionBarActivity? Ve avantajları AppCompatActivitynelerdir? Birisi birkaç numune verebilir mi?

Herhangi bir ipucu takdir. Ve şimdiden teşekkürler.

Not: Beni en çok şaşırtan şey AppCompatActivity, uzatılmış android.support.v4.app.FragmentActivityolan doğrudan ebeveyn sınıfıdır ActionBarActivity! Demek istediğim, bu şimdi ActionBarActivityyapabilen her şeyi AppCompatActivityyapabilir, Android neden ikincisini itti?

Bu arada, devletler bu bir blog yazısı gördüm: " Bu bir yeniden adlandırma değil ActionBarActivityiçin AppCompatActivity, iç mantığı AppCompatüzerinden ulaşılabilirAppCompatDelegate ", yani "ne iç mantık arasında" AppCompat? Ne yapabilirim AppCompatDelegate? Birisi bunun hakkında bazı kodlar gönderebilir mi?



Ben okudum, bu bir giriş, çok sığ.
SilentKnight

1
AppCompatActivity, ActionBarActivity'nin üst sınıfıdır. Ve daha fazla fikir için koda bakmanız gerekir.
Pankaj Kumar

Evet, bunu fark ettim.
SilentKnight

Yanıtlar:


145

Chris'in yazdığı gibi, ActionBarActivity(bir genişletme AppCompatActivitysınıfı) kullanımdan kaldırılan yeni sürümü, geriye dönük uyumluluk sınıfını kullanmak için güvenlidir. Kullanımdan kaldırılması, AppCompatActivitybunun yerine doğrudan yeni bir şey kullanmanızı istemeniz için bir ipucudur . sınıfı dahili olarak AppCompatActivitykullanan yeni, daha genel bir uygulamadır AppCompatDelegate.

Yeni bir gelişime başlarsanız, AppCompatActivityhemen yeni sınıfı kullanmayı tercih etmelisiniz . Uygulamanızı güncelleme şansınız varsa ActionBarActivity, yeni etkinlikle kullanımdan kaldırılmış olanları da değiştirin . Aksi takdirde, kullanımdan kaldırılmış etkinliklerle kalabilirsiniz ve davranışta hiçbir fark olmayacaktır.

AppCompatDelegateBununla ilgili olarak , bir etkinlikte ne renkli ne AppCompatActivityde yeni renkli widget'lara sahip olmanızı sağlar ActionBarActivity.

Örneğin, bir etkinliği harici bir kitaplıktan miras alırsınız , bu da miras alınmaz , AppCompatActivityancak bu etkinliğin renkli malzeme widget'larına (görünümler) sahip olmasını istersiniz. Eğer bir örneğini oluşturmak için gereken gerçekleşmesi için AppCompatDelegateetkinlik içinde gibi o faaliyetin geçersiz kılma yöntemleri addContentView(), setContentView()vb (bkz AppCompatDelegateyöntemlerin tam listesi için javadoc) ve bu geçersiz kılınmış yöntemlerden iç iç Çağrıları yönlendirmek AppCompatDelegateörneği. AppCompatDelegategerisini halleder ve "eski moda" etkinliğiniz "gerçekleşir".


İyi Örnek .. Teşekkürler @ sergej shafarenka
Rakesh L

2
Lütfen Aktivite'yi Uyumluluk yerine kullanacağımda ne olacağını söyleyebilir misiniz?
Aradım

35

Çoğunlukla bir isim değişikliği: ActionBarActivityşimdi yaptığı her şeyi gerçekten tanımlamıyor. İsterseniz güvenle kullanabilirsiniz ActionBarActivity. Bunu bir sembolik bağlantı gibi düşün.


AppCompatActivitydoğrudan ebeveyn sınıfı ActionBarActivity, şimdi ActionBarActivityyapabilen her şeyi AppCompatActivityyapabilir, neden Androiddaha sonra dışarı itti?
SilentKnight

4
@SilentKnight: Chris'in yazdığı gibi, çoğunlukla bir isim değişikliği. Android Geliştiricileri Bloğundan Alıntı : "AppCompat Destek Kütüphanesi mütevazi, ancak önemli başlangıçlarla başladı: tüm API 7 ve üstü cihazlar için tek bir tutarlı Eylem Çubuğu. Revizyon 21'de yeni bir sorumluluk aldı: malzeme renk paleti, widget renklendirme, Araç çubuğu desteği ve tüm API 7+ cihazları için daha fazlası. Bununla birlikte, ActionBarActivity adı gerçekten yaptığı şeyin tamamını kapsamıyordu. "
CommonsWare

3
Öyle güvenli değil gelecek sürümlerinde kaldırılması söz konusu olduğundan, kullanımı önerilmemektedir sınıflara. ActionBarActivityDestek kitaplığından düştüğünde (örneğin uygulamanızı güncellerken) tüm referansları kolayca değiştirebilmenize rağmen, bundan sonra kullanmaktan kaçınmanızı tavsiye ederim.
david.schreiber

12

AppCompat Destek Kütüphanesi mütevazi ama önemli başlangıçlarla başladı: tüm API 7 ve üstü cihazlar için tek bir tutarlı Eylem Çubuğu. Revizyon 21'de bu yeni bir sorumluluk aldı : tüm malzeme renk paleti, widget renklendirme, Araç Çubuğu desteği ve daha fazlasını tüm API 7+ cihazlarına getirmek. Bununla birlikte, ActionBarActivity adı gerçekten yaptığı şeyin tamamını kapsamıyordu .

http://android-developers.blogspot.it/2015/04/android-support-library-221.html


..Lütfen bana Etkinlik'i Uyumluluk yerine kullanacağımda ne olacağını söyleyebilir misiniz?
Aradım

9

AppCompatActivityandroid destek appcompat kütüphanesinin yayınlanmasından bu yana Android-SDK'ya tanıtıldı .

AppCompatActivitydoğrudan çocuk sınıfıdır FragmentActivitydestek v4 ve doğrudan ana sınıfının ActionBarActivity.

AppCompatActivitydestek kitaplığı eylem çubuğu özelliklerini kullanan etkinlikler için temel sınıftır .

Bir ekleyebilir ActionBarüzerinde çalıştırırken etkinliğe API düzeyinde 7 veya daha yüksek etkinlik için bu sınıfa uzanan ve etkinlik düzeni seçerek Theme.AppCompat veya benzer bir tema.

Destek v7 appcompat kütüphanesine gelince, Action Bar kullanıcı arayüzü tasarım deseni için destek ekler . Bu kütüphane, malzeme tasarımı kullanıcı arayüzü uygulamaları için destek içerir .

V7 appcompat kütüphanesinde bulunan anahtar sınıflardan bazıları:

  • ActionBar - İşlem çubuğu kullanıcı arayüzü modelinin uygulanmasını sağlar.
  • AppCompatActivity- Destek Kitaplığı eylem çubuğu uygulamasını kullanan etkinlikler için temel sınıf olarak kullanılabilecek bir uygulama etkinliği sınıfı ekler .
  • AppCompatDialog- AppCompat temalı iletişim kutuları için temel sınıf olarak kullanılabilecek bir iletişim sınıfı ekler .
  • ShareActionProvider - Bir işlem çubuğuna eklenebilecek standart bir paylaşım işlemi (e-posta veya sosyal uygulamalara yayınlama gibi) desteği ekler.

Android Destek Kitaplıkları'nı indirdikten sonra , bu kitaplık / extras / android / support / v7 / appcompat / dizininde bulunur.


Ne olmuş android.support.v4.app.ActivityCompat? Bu sadece eski adı AppCompatActivitymı?
Taylan

7

Daha önce içine tek giriş noktası AppCompatartık kullanımdan kaldırılmış ActionBarActivitysınıftan geçiyordu . Ne yazık ki bu, sizi PreferenceActivityimkansız kullanmak gibi şeyleri ayarlı bir Etkinlik hiyerarşisi kullanmaya zorladı .

daha fazla bilgi için chris banes destek kitaplıkları-v22-1-0'a bakınız .


1
Chris'in blogu, çok takdir ediliyor.
SilentKnight

2

Android destek kitaplığının en son sürümü olan 22.1, API Seviye 7 ve üstü ile başlayan tüm cihazlar için tek bir tutarlı getirmeyi vaat eden ActionBarActivitylehine itiraz AppCompatActivityediyorActionBar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.